jQuery Ajax完成但不是这个功能

时间:2011-10-14 10:01:31

标签: jquery

我有以下代码:

$(document).ajaxComplete(function () {
    tips();
});

当ajax事件完成时,会再次运行提示功能!然而,提示函数ALSO包含ajax请求,所以它调用自己,这不是我想要做的!

如果ajax事件完成,我怎么能运行提示除非是ajax请求的提示

2 个答案:

答案 0 :(得分:4)

可以设置ajaxComplete()的回调函数以接收有关ajax请求的详细信息。然后,您可以在进行ajax调用时传递一个特殊设置,该调用允许您告诉您何时应该,或者不应该调用提示功能:

function tips() {
    var settings = {
        is_tips_call: true
    };

    $.ajax('#', settings);

    alert("In tips");
}

$(document).ajaxComplete(function(event, xhr, settings) {

    if ('is_tips_call' in settings && settings.is_tips_call == true) {
        // Do nothing
        return;
    }

    tips();

});

我为此制作了jsFiddle,以便您可以看到它的实际效果。这比接受的答案更可取,请参阅我的评论以获取详细信息。

答案 1 :(得分:0)

修改

请勿使用我的解决方案。使用下面的mmcnickle中的那个。


在你的tips();函数中你可以设置一个bool标志吗?有点像...

var isTips = false;

function tips(callBack){
   isTips = true;
   // rest of your code
   if(typeOf(callBack) == 'function'){
      callBack();
   }
}

$(document).ajaxComplete(function(){
   if(!isTips){
      tips(function(){
         isTips = false;
      });
   }
});