我看到人们在jQuery中使用所有这些不同的技术。我知道第二种技术将在页面加载时运行。但是第一个和第三个函数什么时候启动呢?第三种技术是用在插件中来避免冲突,对吧?但是它肯定会在页面加载之前触发吗?我还添加了第四个技巧。我想知道你什么时候应该/不应该使用每种技术。如果他们中的任何一个是假的,让我知道!
第一个
(function($) {
})(jQuery);
第二位
$(document).ready(function(){
});
第三
$(function(){
}());
第四位
jQuery(function($) {
});
第五位
(function(){
})();
发布于 2010-02-10 04:40:24
更新他已经更改了问题中的呼叫列表,所以我正在更新以匹配。
第一个是黑客攻击,以避免与可能分配$
的其他库发生冲突。它不是ready
处理程序。第二个和第三个是ready
事件处理程序。
以下三种语法都是等效的:
因此,尽管这三种方法做的是相同的事情,但避免使用第二种方法。
在jQuery 1.3中,$()
等于$(document)
。This is no longer true in 1.4。
第四个在我看来像是一个语法错误。它本质上分配了一个新的就绪处理程序,但它传递了一个带有名为$
的参数的函数。因为这是一个事件处理程序,所以jQuery将在第一个参数中传递事件信息。您通常不希望$
表示事件信息。
第五个函数定义了一个新函数,然后立即调用它,不传递任何参数。所以这就是:
(function(){
alert("Hi!");
})();
意思与此相同:
alert("Hi!");
发布于 2010-02-10 04:35:59
第1个-将$赋值给jQuery,仅在括号内使用(无冲突版本);第2个是普通版本,第3个是速记:)
更多信息:http://docs.jquery.com/Using_jQuery_with_Other_Libraries#Overriding_the_.24-function
编辑:哦,是的,简写是:
$(function() {
// your code
});
(函数()括号后无括号)
编辑:在长时间阅读我自己的链接后,似乎第一个链接可能只包装了部分代码,其中$
符号被分配给jQuery,但您仍然必须使用$(document).ready()
编辑:对于更新的列表:第5种类型:检查其他答案,我不知道该类型。
jQuery(function($){
});
然而,第四个是用于: 1.将$
附加到jQuery,临时重载(在括号内)任何框架,全局使用$
速记(即原型),也是document.ready
语句。
https://stackoverflow.com/questions/2232341
复制相似问题