簡體   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