(function($){
$(function(){
…normal jquery
}); // end of document ready
})(jQuery); // end of jQuery name space
这是什么意思?我想如果我想用domready我要写:
$(document).ready(function(){
区别在哪里可以改变吗? 谢谢你的帮助
答案 0 :(得分:4)
$(function() {
只是$(document).ready(function() {
(function($){
,它们是等效的。 })(jQuery);
.... $
部分仅用于兼容性,因此jQuery
是范围内的document.ready
对象(即使它是外部的其他内容)。
此处需要注意:jQuery
处理程序接收jQuery(function($){
…normal jquery
}); // end of document ready
作为第一个参数,因此网站的代码可以更简洁地表达为:
$(function() { });
所以回答你的问题:你必须改变吗?不,请使用您喜欢的格式...我更喜欢$(document).ready(function() { });
,因为它更少打字,而且我每天都会做一百次。如果你发现{{1}}更清楚,坚持下去,但他们的行为相同......所以使用你和你的团队更清楚的。
答案 1 :(得分:1)
您引用的代码的DOM就绪部分:
$(function() {
// Document is ready let's write some jQuery!
});
完全等同于:
$(document).ready(function () {
// Document is ready let's write some jQuery!
});
包装DOM就绪内容的部分是完全独立的目的:
(function($) {
...
})(jQuery); // end of jQuery namespace
以上实际上是一个函数调用。您正在调用匿名函数并将jQuery
对象作为参数传递,然后将其分配给参数$
。这可以确保内部的所有代码(我已经...
)可以使用$
知道它引用jQuery
。
这是人们使用的故障保护,因为其他一些JavaScript代码可能已将$
变量分配给全局namspace中的jQuery
以外的其他内容。通过将jQuery代码包装在一个函数中(请记住 - 只有函数具有JavaScript范围)将jQuery
分配给$
,您就是安全的。