Javascript 多重DOM准备好了吗?
可能重复:Javascript 多重DOM准备好了吗?,javascript,jquery,Javascript,Jquery,可能重复: 我已经准备好在jQuery文档中使用jQuery的JS代码,即: $(function() { }); 我在页面上运行多个jQuery脚本,所有脚本都包含在一个$(function(){})中是否有任何理由将脚本分解为多个就绪处理程序?即: $(function() { // First Script }); $(function() { // Second Script }); //etc. 或者在一个脚本中包含multplie脚本可以吗?即:
我已经准备好在jQuery文档中使用jQuery的JS代码,即:
$(function() {
});
我在页面上运行多个jQuery脚本,所有脚本都包含在一个$(function(){})中代码>是否有任何理由将脚本分解为多个就绪处理程序?即:
$(function() {
// First Script
});
$(function() {
// Second Script
});
//etc.
或者在一个脚本中包含multplie脚本可以吗?即:
$(function() {
// First Script
//Second Script
//etc.
});
我假设一个很好,但我想确保没有理由我应该使用多个 您的脚本中可以有多个文档。就绪的处理程序,jQuery将在执行之前将它们合并为一个处理程序。但实际上没有必要有很多document.ready处理程序。一个就够了。如果您总是将脚本放在DOM的末尾,就在结束标记之前,您不需要使用任何document.ready处理程序
例如:
<html>
<head>
<title></title>
... your CSS references come here
</head>
<body>
... the markup of the body comes here ...
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
// you don't need to use any document.ready handlers here =>
// you could directly write your scripts inline or reference them
// as external resources. At this stage the DOM will be ready
</script>
</body>
</html>
... 你的CSS引用到这里
... 身体的标记在这里。。。
//您不需要使用任何文档。此处的就绪处理程序=>
//您可以直接内联编写脚本或引用它们
//作为外部资源。在此阶段,DOM将准备就绪
它的工作方式完全没有区别
然而,它对组织是有用的
另一方面,这意味着需要运行更多的jQuery。您可以将所有脚本/函数包装在一个就绪事件中,或者您可以简单地将所有脚本放在html之后,然后避免等待就绪事件,因为此时DOM已经加载
<html>
<head>
<!-- Style sheets Go Here -->
</head>
<body>
<!--HTML Goes Here -->
<!-- Scripts Go Here -->
</body>
</html>
1就绪处理程序。除非它们在不同的文件中,否则没有理由使用多个。你可以这样做,但从技术上讲,你只需要一个。看看为什么它会运行得更多?@Dhaviat Pandya,因为每次你调用$(function(){
您为DOM就绪事件构建了一个jQuery包装器,这会导致开销。@哦,这不是真的。jQuery在执行之前将所有$(function(){});
处理程序合并到一个文档就绪订阅中。没有开销。它仍然需要调用$()
,从而计算出您给它的内容(在本例中是一个函数)以及如何使用它。这是开销。@Ohgodwhy:这有点误导人。“构建”所需的时间一个包装器是可以忽略不计的,我认为jQuery甚至不会为这种特殊情况构建一个包装器。问题是应该不可以,而你肯定不应该@Ohgodwhy:这怎么是一个“肯定的”?也许有人喜欢分离。他可能会在可能发生这种情况的地方使用一些Java Webframework(例如Wicket-当多个组件希望在domready中添加某些内容时)