繁体   English   中英

为什么(jQuery)在函数右括号后

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM