javascript - $(document).ready 等效于异步加载的内容

标签 javascript jquery html

我有一个 UI(我们称之为第 1 页),其中包含大量 HTML 和 JavaScript。单击第 1 页上的某些元素时,将打开一个 jQuery UI 对话框并加载部分页面(我们称之为第 2 页):

$("#myDialog").dialog({ modal: true /* Other options */ });
$('#myDialog').load('page2Link', { }, function () { });
$('#myDialog').dialog('open');

第 2 页还有一堆 HTML 和 JavaScript。简化示例:

<script src="Scripts/page2Stuff.js" type="text/javascript"></script>

<div id="page2Body">
    <!-- More elements -->
</div>

我在 page2Stuff.js 中有 JS,需要等到第 2 页完全呈现。我可以在这个部分页面中使用某些东西来查看新的 HTML 是否已添加到 DOM 中吗?我尝试了以下方法:

$('#myDialog').load('page2Link', { }, page2ReadyFunction);

找不到 page2ReadyFunction。我假设是因为 .loadpage2Stuff.js 中运行 JavaScript,然后丢弃它或其他东西?

我现在能够让它工作的方式是使用 setTimeout 并不断检查 $('#page2Body') 是否返回除此之外的任何内容看起来不太理想。

最佳答案

与其将 script 标记放在第二页的开头,不如将其放在末尾,在所有 HTML 之后,如下所示:

<div id="page2Body">
    <!-- More elements -->
</div>

<script src="Scripts/page2Stuff.js" type="text/javascript"></script>

由于代码将根据源顺序执行,您可以放心,HTML 将在您的脚本运行时准备就绪。

关于javascript - $(document).ready 等效于异步加载的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8793536/

相关文章:

javascript - react 中止/取消 AJAX 请求。 Axios 或 XHR

javascript - 将 Javascript 替换为 Typescript

javascript - Ajax 请求不返回在 Internet Explorer 中初始 AJAX 请求期间添加的数据

javascript - 对整个页面进行着色,悬停时取消对选定元素的着色

php - 在不使用 css 中的高度属性的情况下,根据右容器高度调整左容器

javascript - ExtJS 4 日期选择器。给细胞着色

javascript - Fancytree - 将新元素添加到树节点(日期、注释等)

html - 使 'class' 完全覆盖导航 div 颜色属性

css - 相对于中心定位页面元素

javascript - 使用 HTML 和 Javascript 进行加/减运算