嘿伙计们,我发现了一个非常有趣的网站模板,它的头文件中有以下几行:
(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 中具有作用域)$,您是安全的。