[英]why is (jQuery) after function closing bracket
我正在使用Magento网站。 我遇到了使Magento的prototype.js与jQuery配合使用的问题。 我读过我所有的jQuery需要使用jQuery.noConflict();。 我已经做了,但是仍然有一些问题。 我已经看到,一些函数在右括号后跟(jQuery)。
我想知道这是什么意思,是否需要将其更改为(jQuery.noConflict())?
只要在该点之前(包括JQuery库之后jQuery.noConflict()
调用jQuery.noConflict()
就无需将(jQuery)
更改为(jQuery.noConflict())
)。
如您所知,当您在无冲突模式下使用jQuery
,应该使用jQuery
而不是$
。
但是您可以在放置在立即调用的函数表达式(IIFE)中的代码中使用$
而不是jQuery
,如下所示:
(function($) {
// Code here can use $, instead of jQuery.
})(jQuery);
IIFE是您定义匿名函数并立即调用它的地方。 在上面的代码中, jQuery
对象作为参数传递给匿名函数,并且由于参数名为$
,因此$
表示函数内部的jQuery
对象。
另外, jQuery
对象作为第一个参数传递给文档就绪事件的回调函数,因此您可以执行以下操作:
jQuery(function($) {
// Code here can use $, instead of jQuery.
});
与以下内容相同:
jQuery(document).ready(function($) {
// Code here can use $, instead of jQuery.
});
请注意,在IIFE中用var
声明的变量不是全局变量。 这通常是一件好事,并且是使用IIFE的另一个原因。 如果确实要在IIFE中声明全局变量,则应将其称为window
对象的属性。
<script type="text/javascript">
var a = 1; // This is a global variable.
(function($) {
var b = 2; // This is NOT a global variable.
window.c = 3; // This is a global variable.
})(jQuery);
<script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.