为什么要像这样编写代码Jquery
为什么要像这样编写代码Jquery?
(function ($) { $(function () { ....... }); })(jQuery);
这称为闭包,以避免与使用$
其他库冲突。 这样,您可以确保在将该jQuery
作为参数传递时使用该函数中的$
。
(function ($) { $(function () { ....... }); })(jQuery); //<----passing jquery to avoid any conflict with other libraries.
来自文档:
将jQuery传递给IIFE(立即调用的函数表达式)是一种最佳实践,它将映射到美元符号,因此它不能被执行范围内的另一个库覆盖。
这通常用于编写插件。 在这里阅读更多
-
$(document).ready(function(){ ... });
或$(function(){...});
这指定了DOM完全加载时要执行的函数。 传递给.ready()的处理程序保证在DOM准备好后执行,因此这通常是附加所有其他事件处理程序并运行其他jQuery代码的最佳位置。 使用依赖于CSS样式属性值的脚本时,在引用脚本之前引用外部样式表或嵌入样式元素很重要。 阅读更多
-
(function(){ ... })();
这是一个在浏览器解释你的
ecma-/javascript
时尽快调用自己的函数。 因此,您不太可能在此处成功处理DOM elements
。 它将在Javascript中遇到它时立即执行。
阅读更多
类似问题
类似问题2
您的代码说明
(function ($) { <-- $ is just an alias for jQuery $(function () { ....... <--- Here you can use the $ without an issue. }); })(jQuery); <--- This is done usually to avoid conflicts. Passing jQuery object here
如果你看一下jQuery核心。 它说
// Expose jQuery to the global object window.jQuery = window.$ = jQuery;
阅读更多
jQuery.noConflict()
(function ($) { // })(jQuery);
这种类型的模块模式在那里非常常用。 它调用自身传递对jQuery的引用,提供对变量的更快访问,因为它现在位于函数的范围内,并且还可以防止全局污染。
第二个:
$(function () { ....... });
加载DOM后运行匿名函数,确保在执行任何代码之前一切准备就绪。
其他一些库也使用$
作为变量名,所以为了确保你使用jQuery而不是其他lib var,你会将它传递给一个函数并在该范围内命名为$
。
(function ($) { //<--- naming jQuery to $ $(function () {//now we are sure that we are using $ as jQuery ....... }); })(jQuery); //<----passing jquery .