中止jQuery()。load()

jQuery库的.load()函数允许您有选择地从另一个页面加载元素(受某些规则约束)。 我想知道是否可以中止加载过程。

在我们的应用程序中,用户可以浏览项目列表。 他们可能会选择单击一个按钮来加载并显示另一个文档中有关项目的其他信息(这可能需要一些时间)。 如果他们在列表中选择了另一个项目,而.load()仍在发生,我希望中止加载。

这可能吗? 它甚至值得吗? 有任何想法吗?

您无法直接使用.load()执行此操作,因为它返回用于链接的jQuery对象,但如果您使用.html()更改为完整的$.ajax()调用,则可以这样:

 var xhr = $.ajax({ url: 'mypage.htm', success: function(data) { $("#myElement").html(data); } }); //if needed, abort the request later.. xhr.abort(); 

这使用XMLHttpRequest对象上的.abort()方法来中止加载。

尼克的回答几乎是我所需要的,但并不完全。 我使用.load()只加载页面中的图像。 所以,扩大尼克的答案……

而不是……

 $('#myElement').load('mypage.htm #myImage'); 

我现在正在使用……

 var xhr = $.ajax({ url: 'mypage.htm', success: function(data) { $("#myElement").html($(data).find("#myImage")); } }); //if needed, abort the request later.. xhr.abort(); 

您可以手动使用jQuery.ajax来完成此操作。 它将返回一个XMLHttpRequest对象,您可以根据需要调用abort 。 在成功处理程序中,您可以使用jQuery.html

 $("#myElement").load("/mypage #mayImage", function(response, status, xhr) { if (status == "error") { xhr.abort(); } }); 

应该这样工作..

或者在另一个事件上,我在长字段上发送validation,用户更改内容,我想停止之前的检查以重新检查:

 xhr.abort(); $("#myElement").load("/mypage #mayImage", function(response, status, xhr) { if (status == "error") { xhr.abort(); } });