15

我有一个页面,我可以在其中插入一些 javascript / jquery 来操作输出。我对页面标记等没有任何其他控制权。

我需要在页面上的每个出现之后通过 jquery 添加一个额外的元素。问题是元素是通过在 $(document).ready 完成后发生的现有页面上的异步调用生成的。

本质上,我需要一种在页面加载后调用我的 jquery 并且随后的 ajax 调用完成的方法。有没有办法检测页面上任何 ajax 调用的完成,然后调用我自己的自定义函数在新创建的 s 之后插入附加元素?

4

5 回答 5

51

不幸的是,这并不适用,因为 OP 似乎没有使用 或任何 jQuery ajax 方法来实际加载内容,但将其留在这里以防未来的 googler 这样做。$.ajax()


您可以在这里使用任何满足您需求的全局 ajax 事件,您可能在 $.ajaxComplete()或之后$.ajaxSuccess()

例如:

$(document).ajaxSuccess(function() {
  alert("An individual AJAX call has completed successfully");
});
//or...
$(document).ajaxComplete(function() {
  alert("ALL current AJAX calls have completed");
});

如果您只想运行一些通用函数,请将它们附加到文档中(它们只是下面的事件)。如果你想特别展示一些东西,例如模式或消息,你可以更简洁地使用它们(尽管这似乎不是你想要的),如下所示:

$("#myModal").ajaxComplete(function() {
  $(this).fadeIn().delay(1000).fadeOut();
});
于 2010-05-26T10:30:32.567 回答
2

此示例仅使用 jQuery 在 ajax 调用的开始和结束处显示和隐藏元素:

    $("#contentLoading").ajaxSend(function(r, s) {
        $(this).show();
        $("#ready").hide();
    });

    $("#contentLoading").ajaxStop(function(r, s) {
        $(this).hide();
        $("#ready").show();
    });

#contentLoading是一个 gif 图像进度指示器。

于 2010-05-26T15:15:06.187 回答
1

据我所知,您在准备好的处理程序中使用了一些 jQuery 的 Ajax 函数。因此,您可以将另一个函数传递给它,该函数将在您的 Ajax 函数获得响应后调用。例如

$(document).ready(function(){
    $("#some_div").load('/some_url/', function(){
        /* Your code goes here */
    });
});
于 2010-05-26T10:51:00.897 回答
1

您可以重写 XMLHttpRequest 对象的 send() 函数。

在此处查看使用纯 Javascript 的解决方案。

于 2014-05-14T13:43:08.127 回答
0

您可以使用.live() / .delegate()

于 2010-05-26T10:54:58.870 回答