AjaxStart和AjaxStop无法正常工作

时间:2012-12-08 03:06:44

标签: jquery ajax

我使用ajaxStart和ajaxStop来显示加载的gif。 它工作正常,直到我添加这段代码:

$(function(){  
$('.link a').live('click', function(ev) {

    ev.preventDefault();
    ev.stopPropagation();


    $('#main').load($(this).attr('href'));


  return false;
});
});

这是我的ajaxStart / Stop代码:

$(document).ajaxStart(function(){
    $("#loading").show();
 }).ajaxStop(function(){
    $("#loading").hide();
 });

请帮助:)

编辑:我添加了导致问题的代码,添加了启用div中页面的链接以在单击时加载div本身中的链接,而不是加载整个窗口。在新加载页面时,AjaxStart和AjaxStop工作正常,但是一旦我单击div中的链接(加载页面),AjaxStart就不会触发。

链接的代码(位于div内的页面中):

 echo "<span class = 'link'><a href='feed.php?".$new_query_string ."' id='page_a_link'     name='page_a_link' >$i</a></span>";

 echo "<span class = 'link'><a id='page_a_link' name='page_a_link' href='feed.php?".$new_query_string ."' >< Pre</a></span>";

 echo "<span class = 'link'><a href='feed.php?".$new_query_string ."' id='page_a_link' name='page_a_link' >Next</a></span>";

这些是用于分页的。我刚从PHP代码中取出了链接部分。

1 个答案:

答案 0 :(得分:0)

我认为问题在于,当您重新加载页面时,内容以及分页链接会被替换,您将丢失旧的绑定点击事件

试试这段代码:

$(function(){  


  function bindPagination() {
    $('span.link a').on('click', function(ev) {
       ev.preventDefault();
       // ev.stopPropagation();

       $('#main').load($(this).attr('href'), function(){
          //callback function fired when page loaded
          //now rebind click event
          bindPagination(); 
       });

       return false;
    });   
  }

}); 

并尝试以这种方式更改“加载器”:

$('#loader')
  .bind("ajaxSend", function() {
    $(this).show(); 
        })
  .bind("ajaxComplete", function() {
    $(this).hide();
});