17

有没有办法在 DOM 准备好之前执行 jQuery 代码?

4

2 回答 2

20

jQuery 只是 Javascript,所以问题实际上是“是否可以在 DOM 准备好之前运行 JavaScript”,我猜你的意思是文档而不是 DOM。

如果我们同意这个问题是“是否可以在文档准备好之前运行 JavaScript”。那么答案是肯定的。JavaScript 将在遇到时执行。

这就是为什么您几乎总是看到$(function(){...})或者$(document).ready(function(){...})因为大多数 jQuery 代码要求文档准备好,但附加事件处理程序的代码肯定会在文档准备好之前执行(否则它将无法处理文档准备好事件)。

通常你应该把你的 Javascript 包含在你的 HTML 的底部,但是如果你想让它更早地执行,你可以简单地把它放在文档的前面,例如在标题中。

<html>
  <head>
     ...
     <script>
        //place your code to be executed early here
     </script>
  </head>
...
</html>
于 2012-09-26T09:22:00.247 回答
4

如果您在文档的头部包含 jQuery,然后在头部的另一个脚本标签中编写代码,它将在 DOM 准备好之前运行:

<head>
    <script src="jquery.js"></script>
    <script>
        // Do some stuff before the DOM is ready
    </script>
</head>
<body>
    <!-- Browser hasn't got this far, so no elements will be available -->
</body>

但是,显然您将无法与任何 DOM 元素进行交互,因为它们还不存在。


话虽如此,您可以在现代浏览器使用一种技术,它可以让您在将 DOM 元素插入页面时(在浏览器呈现页面时)与它们进行交互。它依赖于CSS 动画事件。我编写了一个简单的库 (Progressive.js)以使其更易于处理。

于 2012-09-26T09:13:43.903 回答