我有两个点击事件,其中一个有一个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中的积压事件?
答案 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();
});