jquery - $(document).ready() 在准备好之前执行?

标签 jquery document-ready

考虑我正在运行的简化版本:

<html>
   <head>
      <script src="data.js"></script>
      <script src="content.js"></script>
   </head>
   <body>
      <div id="contentGoesHere"></div>
   </body>
</html>

这显然还有更多内容,但这是基本要点。在 content.js 中,我有几个函数可以根据 data.js 中包含的 json 数据将标记加载到我的 div 中。除了这些函数之外,还有以下行:

$(document).ready(function()
{
    loadContent();
});

出于所有意图和目的,加载内容加载得很好,但在该代码中调用了对几个 div 中的第一个 div 执行 jquery .show() 的调用,这些 div 在全部附加到容器后加载元素。该代码不会执行,几乎就像 div 还不存在一样。所以我尝试延迟加载:

<html>
   <head>
      <script src="data.js"></script>
   </head>
   <body>
      <div id="contentGoesHere"></div>
   </body>
   <script src="content.js"></script>
</html>

果然,两者都会导致显示第一个面板。如果 .ready() 应该等到 DOM 加载完成,为什么延迟加载包含 $(document).ready() 函数的文件会产生影响?

最佳答案

在 DOM 准备就绪后,您将使用 Javascript 附加额外的 DOM 元素。 $(document).ready()加载初始 DOM 后触发。这意味着初始请求中发送的内容。它不知道您在外部 Javascript 中的动态附加。

此外,<head> 中包含的脚本部分在 <body> 之前同步加载部分已加载。

关于jquery - $(document).ready() 在准备好之前执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18726553/

相关文章:

jquery - 如何在拖动时使 Draggable 元素在屏幕中的所有元素之上可见?

jQuery appendTo() 在 IE7 中未触发

jquery - head.ready() 与 $(document).ready

javascript - VB.NET Awesomium ExecuteJavaScriptWithResult 拉起未定义

javascript - 错误缺少 'Before Statement' - @import

jquery - 在 jquery 中自定义搜索过滤器

javascript - bootstrap-datepicker 格式化日期输出

javascript - 如果用户开始做其他事情,重置按钮操作

javascript - 为什么 jQuery $(document).ready() 在验证失败后没有在 Rails 渲染 View 中触发?

javascript - 当在同一个 HTML 页面上使用的两个 JavaScript 文件中有两个 jQuery $(document).ready 调用时会发生什么?