1

我正在尝试在父页面上使用 jQuery Load 从 URL 动态插入一些子页面。在父页面中,我执行以下操作:

var html = gridDiv.load(self.options.url, function(html, status, xhr)
{
gridDiv.find("myObject:first").data("objectInstance");
    //do something....
});

数据对象实际上是在文档准备就绪的函数期间添加到子页面中的...

$().ready(function()

我首先注意到的是在本地运行时一切都按预期工作。但是,当部署在实际 url 上时,加载完成事件会在 $().ready 在子页面上完成之前触发。第一个问题是这是正确的,有什么办法可以让我只有在子页面上调用 $().ready 之后才能运行我的代码?

我尝试了一种解决方法,在父页面中使用计时器来检查元素。在很短的时间间隔后,该元素将出现在 dom 中,但其上的数据为空。但是,如果我在按钮单击中运行调试器,我可以在那里看到它。

另一种解决方法是将脚本放在子页面的底部,然后准备好删除文档。这也没有奏效。

有什么建议么?(我不能太多修改子页面上的代码逻辑它需要自包含)

4

2 回答 2

2

当您在本地运行代码时,您并没有真正看到加载时间延迟。您的代码的问题是

    $().ready(function(){})
    //executes when HTML-Document is loaded and DOM is ready

所以我建议你使用

    $(window).load(function(){});
    // executes when complete page is fully loaded, including all frames, objects, scripts and images
于 2013-01-14T22:59:50.930 回答
1

您是否尝试过将要执行的代码放入函数中,然后在子页面上调用该函数?

例如:

//main page
$.ajax({
    url: "child.html",
}).done(function(data, xhr, status){
    $('body').append(data);
});

function child_finished_loading(){
    alert('child is done!');
}

//returned through ajax (child)
<span>This is being appended to main page!</span>
<script type="text/javascript">
    $(function(){
        child_finished_loading();
    });
</script>
于 2013-01-14T21:58:30.020 回答