我一直在研究一些jQuery插件的工作原理,我看到以下代码作为整个插件的闭包。
$(function(){
// plugin code here
});
(function($){
// plugin code here
})(jQuery);
这两者之间有什么区别?
我一直在研究一些jQuery插件的工作原理,我看到以下代码作为整个插件的闭包。
$(function(){
// plugin code here
});
(function($){
// plugin code here
})(jQuery);
jQuery
对象作为参数执行。jQuery.ready
的快捷方式。它只在DOM完全准备好被操作时调用你提供的函数(当此脚本首次运行时通常不是这样,因此需要回调)-例如,当您可以安全地按其ID或CSS选择器查找元素,添加新元素等等。jQuery
对象作为名为$
的参数传递。在函数内部,您可以安全地假定$
引用jQuery对象,而没有此选项,如果您正在使用jQuery.noConflict
来将$
释放回到以前拥有它的东西(也许是Prototype),则不能。当您有很多使用$
编写的代码,但随后发现必须与Prototype或其他也想使用$
的内容共存时,此技术非常有用。您只需将所有代码放在匿名函数中即可。jQuery(function($) {
// Code that uses `$` and expects the DOM to be ready to be
// manipulated goes here
});