jQuery的ajaxStart不起作用

10

如果您在此处单击“点击此处订购”按钮:http://www.game onglove.com/gog/test3.html,并且然后单击弹出的 lightbox 窗口中的同一按钮,则会使用 $.post() 运行 ajax 请求。

您可以点击“继续购物”返回到前一个 lightbox 窗口,以便快速重新开始。

如果我在控制台(Chrome 或 Firefox)执行此处的 jQuery 代码,则它能正常工作。但它无法从源代码位置起作用:

$('#cboxLoadingGraphic').ajaxStart(function() {
$(this).show();
$('#cboxLoadedContent').hide();
}).ajaxStop(function() {
$(this).hide();
$('#cboxLoadedContent').fadeIn('slow');
});

为什么在控制台中可以工作,但在源代码的当前位置无法工作?我该如何使其工作?

1个回答

25

那个元素稍后才会被创建,你需要在它被创建后再绑定事件处理程序,或者更简单的方法是从一开始就将处理程序绑定到 document:

那個元素稍後才會被創建,你需要在它被創建後再綁定事件處理程序,或者更簡單的方法是從一開始就將處理程序綁定到document:

$(document).ajaxStart(function() {
  $('#cboxLoadingGraphic').show();
  $('#cboxLoadedContent').hide();
}).ajaxStop(function() {
  $('#cboxLoadingGraphic').hide();
  $('#cboxLoadedContent').fadeIn('slow');
});

1
谢谢!完美地工作了。昨晚我尝试使用“document”,但一直想知道为什么我的浏览器坚持在灯箱外加载下一页。后来我意识到,我忘记使用“#cboxLoadingGraphic”而不是“this”,当我看到你的帖子时就明白了。 :) - Lauren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接