javascript - .ajaxStart() 和 .ajaxStop() 第一次后未触发

标签 javascript jquery ajax

这是我所拥有的:

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

我遇到的问题是,第一次触发 ajax 操作时它工作得很好,但此后的任何时候都不起作用。我必须重新加载页面才能使 ajaxSend/Stop 再次工作。假设我加载一个页面,单击“加载更多”以ajax加载内容,覆盖显示没有问题。但当我第二次点击它时,一切正常,除了这次或之后的任何时候模式都没有显示。

有什么想法吗?

最佳答案

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

关于javascript - .ajaxStart() 和 .ajaxStop() 第一次后未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13201549/

相关文章:

php - 针对很少更新的数据的策略

c# - 来自 ASP.NET MVC Ajax 表单的 HTTP POST 不包含提交按钮

javascript - 使用 JavaScript Fetch() 和 formData() 更新数据库

javascript - 动态创建的元素上的事件绑定(bind)?

javascript - 删除 mouseleave 上的 contenteditable 属性

jquery - 使用 HTML 数据属性的 DataTables 默认列排序

jquery - 大型下拉菜单悬停时闪烁

javascript - Chrome 和 Google 网络字体的问题。显示来自 Firefox 的不同输出

javascript - HTML5 下载属性不适用于 Mozilla

javascript - 有什么方法可以在函数之间绑定(bind) react 变量吗?