我看到人们使用所有这些不同的技术与jQuery。我知道第二种技术将在页面加载时运行。但是第一和第三功能什么时候开火?插件中使用第三种技术来避免冲突呢?但是,这会在页面加载之前开始吗?我还添加了第四种技术。我想知道你应该/不应该使用每种技术。如果他们中的任何一个是假的,让我知道!
1
(function($) { })(jQuery);
第2
$(document).ready(function(){ });
第3
$(function(){ }());
第四
jQuery(function($) { });
第5
(function(){ })();
解决方法
更新他改变了问题列表中的调用,所以我正在更新来匹配。
第一个是避免与可能分配$的其他库冲突。它不是一个准备好的处理程序。第二个和第三个是准备事件处理程序。
All three of the following Syntaxes are equivalent:
- $(document).ready(handler)
- $().ready(handler) (this is not recommended)
- $(handler)
所以尽管这三个做同样的事情,避免第二个。
在jQuery 1.3中,$()等于$(document)。 This is no longer true in 1.4。
第四个看起来像我的语法错误。它本质上分配一个新的可用处理程序,但它传递一个名为$的参数的函数。由于这是一个事件处理程序,所以jQuery将在第一个参数中传递事件信息。您通常不需要$来表示事件信息。
第五个定义一个新的函数,然后立即调用它,不传递参数。所以这:
(function(){ alert("Hi!"); })();
意思相同:
alert("Hi!");