【问题标题】:why is (jQuery) after function closing bracket为什么(jQuery)在函数右括号之后
【发布时间】:2015-05-07 20:20:49
【问题描述】:

我正在使用 Magento 网站。我遇到了一个问题,让 Magento 的prototype.js 与 jQuery 配合得很好。我读过我所有的 jQuery 都需要使用 jQuery.noConflict();我已经完成了,但仍然有一些问题。我已经看到一些函数右括号后跟(jQuery)。

我想知道这是做什么用的,是否需要将其更改为 (jQuery.noConflict())?

【问题讨论】:

    标签: javascript jquery magento prototypejs


    【解决方案1】:

    无需将(jQuery) 更改为(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>
    

    【讨论】:

      猜你喜欢
      • 2013-02-25
      • 1970-01-01
      • 2011-08-14
      • 2017-10-23
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多