嘿伙计们,我发现了一个非常有趣的网站模板,它的头文件中有以下几行:
(function($){
$(function(){
…normal jquery
}); // end of document ready
})(jQuery); // end of jQuery name space
这意味着什么?我想如果我想使用 domready 我必须写:
$(document).ready(function(){
区别在哪里,我可以改变吗?感谢您的帮助
$(function() {
只是的快捷方式,$(document).ready(function() {
它们是等价的。(function($){
....})(jQuery);
部分只是为了兼容性,所以它$
是范围内的对象jQuery
(即使它是外部的其他东西)。
这里需要注意的是:document.ready
处理程序接收jQuery
作为他们的第一个参数,因此站点的代码可以更简洁地表示为:
jQuery(function($){
…normal jquery
}); // end of document ready
所以回答你的问题:你必须改变它吗?不,使用您喜欢的任何一种格式...我更喜欢$(function() { });
因为它的输入更少,而且我每天会做一百次。如果您发现$(document).ready(function() { });
更清晰,请坚持下去,但它们的行为相同......所以使用对您和您的团队更清晰的那个。
您引用的代码的 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
对象作为参数传入,然后将其分配给 parameter $
。这确保了里面的所有代码(我有...
)都可以使用$
知道它引用jQuery
.
这是人们使用的故障保护,因为其他一些 JavaScript 代码可能已将$
变量分配给jQuery
全局命名空间之外的其他对象。jQuery
通过将您的 jQuery 代码包装在一个分配给的函数中(记住——只有函数在 JavaScript 中具有作用域)$
,您是安全的。