Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多重DOM准备好了吗?_Javascript_Jquery - Fatal编程技术网

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中添加某些内容时)