1

我在我的页面中使用了 1.8.1 版本的 jQuery 插件。我创建了一个根据以下代码创建动态脚本的函数,并将其放在 HTML 页面的 BODY 中。

<script> $(document).ready(function(){ // .... Some javascript }); </script>

上面的动态脚本使用 AJAX 获取一些额外的 HTML 和 JQuery 并将其附加到 Body 标记,但在 Ajax 完成后它不会执行。如果我像下面添加一个简单的警报(“某事”),那么它会执行。

<script> alert('something'); $(document).ready(function(){ // .... Some javascript }); </script>

请告诉我我想在没有 alert() 框的情况下使用 document.ready() 执行动态脚本是什么问题..

4

2 回答 2

1

这是因为文档就绪事件已经发生。因为您的页面已经完全加载。你必须以另一种方式解决这个问题。

于 2013-04-22T17:23:55.873 回答
1

为了知道 AJAX 何时完成并且文档准备就绪,您可以使用如下内容:

var docReady = new $.Deferred();
var ajaxDone = $.ajax({
    url: "whatever",
    type: "GET",
    blah blah blah
});

$(document).ready(function () {
    docReady.resolve();
});

$.when(ajaxDone, docReady).done(function () {
    // Document is ready and AJAX request is successful
});

如果 AJAX 请求失败(无论出于何种原因),则$.when().done回调不会执行。它要求两个延迟对象都成功完成。如果您不关心 AJAX 是否成功,.done请将.then.

于 2013-04-22T17:27:18.533 回答