.ajaxStart()和.ajaxStop()第一次没有触发

时间:2012-11-02 19:07:12

标签: javascript jquery ajax

这就是我所拥有的:

$(document).ready(function(){
    //stuff
}).ajaxSend(function() {
    $('.overlay').show();
}).ajaxStop(function() {
    $('.overlay').fadeOut();
});

我遇到的问题是,我第一次触发ajax动作时效果很好,但之后没有任何时间。我必须重新加载ajaxSend / Stop的页面再次工作。所以说我加载一个页面,点击'加载更多'到ajax加载内容,叠加显示没问题。但是我再次点击它,一切正常,除了模态没有出现在这个时间或之后的任何时间。

任何想法?

1 个答案:

答案 0 :(得分:3)

$(document).ready只会被调用一次 - 加载DOM时。通过ajax加载数据时,这将无效。

两个选项:

首先,如果你可以使用你作为ajax页面加载的一部分加载的id识别div,那么你可以做(​​编辑):

$('.overlay').ajaxSend(function() { 
                                       $(this).show(); });
$('.overlay').ajaxStop(function() { 
                                       $(this).fadeOut(); });

或者,您可以完全放弃ajaxStartajaxStop,并在点击“加载更多”链接时触发它们,例如类似的东西:

$("a").click(function(){
   var url = $(this).attr('href');
   $(".overlay").show("fast", function(){
       $("#targetdiv").load(url + " #div_id", {}, function(){
          $(".overlay").fadeOut();
       })
   })
   return false;
});