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