Jquery从另一个事件中止ajax调用

Jquery abort ajax call from another event

本文关键字:ajax 调用 事件 另一个 Jquery      更新时间:2023-09-26

我有两个点击事件,其中一个有ajax调用,为了清晰起见这可以是点击事件a,我有另一个点击事件,我们称它为点击事件b

我注意到,如果我一直快速点击A多次,然后点击B事件排队,即使事件B已经执行,ajax从A将被调用。

当我单击B时,我希望所有ajax调用都停止从a执行。

里面点击事件A我有:

$("A").live("click", function(event) {
    var ajax_call = $.ajax({ /* Some code goes here */ });
});
$("B").live("click", function(event) {
    /* Some code goes here */
   ajax_call.abort();
});

但是上面的方法不起作用。我是否有办法清除从a开始执行的积压事件?

您面临的问题可能与称为闭包的概念有关。第一个回调中的变量不能从第二个回调中访问。的解决方案可以如下:

var ajax_call;
$("A").live("click", function(event) {
    ajax_call = $.ajax({ /* Some code goes here */ });
});
$("B").live("click", function(event) {
    /* Some code goes here */
    ajax_call.abort();
});

它对你有用吗?

似乎是范围问题。ajax_call应该对两个事件都可访问:

<>之前 var ajax_call; $("A").live("click", function(event) { ajax_call = $.ajax({ /* Some code goes here */ }); }); $("B").live("click", function(event) { /* Some code goes here */ ajax_call.abort(); });