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

时间:2011-09-09 15:09:07

标签: javascript jquery ajax

我有两个点击事件,其中一个有一个ajax调用,为了clairty,这可能是点击事件A.我有另一个点击事件,让我们调用这个点击事件B.

我注意到如果我多次快速点击A然后点击B,事件就会排队,即使事件B执行完毕,A的ajax也会被调用。

当我点击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中的积压事件?

2 个答案:

答案 0 :(得分:6)

您遇到的问题可能与名为关闭的概念有关。第二个回调无法访问第一个回调中的变量。解决方案可能如下:

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();
});

它对你有用吗?

答案 1 :(得分:3)

似乎是一个范围问题。两个事件都应该可以访问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();
});