我看到人们在jQuery中使用所有这些不同的技术。我知道第二种技术将在页面加载时运行。但第1和第3功能什么时候会发射?插件中使用的第三种技术是为了避免冲突吗?但这肯定会在页面加载之前触发吗?我还添加了第四种技术。我想知道你应该/不应该使用每种技术。如果其中任何一个是伪造的,请告诉我!
第一
(function($) {
})(jQuery);
第二
$(document).ready(function(){
});
第三
$(function(){
}());
第四
jQuery(function($) {
});
第五
(function(){
})();
答案 0 :(得分:12)
更新他更改了问题中的来电列表,因此我正在更新以匹配。
第一个是避免与可能分配$
的其他库冲突的黑客攻击。 不是 ready
处理程序。第二个和第三个是ready
事件处理程序。
以下所有三种语法都是等效的:
- $(文件)。就绪(处理程序)
- $()。ready(处理程序)(不建议这样做)
- $(处理程序)
所以虽然这三个做同样的事情,但避免第二个。
在jQuery 1.3中,$()
等于$(document)
。 This is no longer true in 1.4
第四个看起来像是语法错误。它本质上分配了一个新的就绪处理程序,但它传递了一个带有$
参数的函数。由于这是一个事件处理程序,jQuery将在第一个参数中传递事件信息。您通常不希望$
代表事件信息。
第五个定义了一个新函数,然后立即调用它,不传递任何参数。所以这个:
(function(){
alert("Hi!");
})();
与此相同:
alert("Hi!");
答案 1 :(得分:4)
1st - 将$分配给jQuery仅在括号内使用(无冲突版本) 第二个是normaln版本,第三个是速记:)
更多:http://docs.jquery.com/Using_jQuery_with_Other_Libraries#Overriding_the_.24-function
编辑:哦,是的,简写是:
$(function() {
// your code
});
(在function()括号后没有括号)
修改:经过长时间阅读我自己的链接后,似乎第一个可能只包裹部分代码,其中$
符号被分配给jQuery,但你仍然需要使用$(document).ready()
编辑:至于更新列表:第5种:检查其他答案,我不知道该类型。
jQuery(function($){
});
然而,第4个用于:1。将$
附加到jQuery,临时重载(括号内)任何框架,其中使用$
简写使用全局(即原型)和ALSO是document.ready
声明。