避免名稱空間衝突
除了 jQuery 之外的庫也可以使用 $ 作為別名。這可能會導致這些庫和 jQuery 之間的干擾。
要釋出 $ 以與其他庫一起使用:
jQuery.noConflict();
呼叫此函式後,$ 不再是 jQuery 的別名。但是,你仍然可以使用變數 jQuery 本身來訪問 jQuery 函式:
jQuery('#hello').text('Hello, World!');
或者,你可以將另一個變數指定為 jQuery 的別名:
var jqy = jQuery.noConflict();
jqy('#hello').text('Hello, World!');
相反,為了防止其他庫干擾 jQuery,你可以將 jQuery 程式碼包裝在一個立即呼叫的函式表示式(IIFE)中 ,並將 jQuery 作為引數傳遞:
(function($) {
    $(document).ready(function() {
        $('#hello').text('Hello, World!');
    });
})(jQuery);
在這個 IIFE 中,$ 只是 jQuery 的別名。
另一種保護 jQuery 的 $ 別名並確保 DOM 準備就緒的簡單方法 :
jQuery(function( $ ) { // DOM is ready
   // You're now free to use $ alias
   $('#hello').text('Hello, World!');
});
總結一下,
- jQuery.noConflict():- $不再指 jQuery,而變數- jQuery指的是。
- var jQuery2 = jQuery.noConflict()-- $不再指 jQuery,而變數- jQuery指的是變數- jQuery2。
現在,存在第三種情況 - 如果我們希望 jQuery 僅在 jQuery2 中可用**,該怎麼辦**?使用,
var jQuery2 = jQuery.noConflict(true)
這導致 $ 和 jQuery 都沒有引用 jQuery。
當多個版本的 jQuery 要載入到同一頁面上時,這很有用。
<script src='https://code.jquery.com/jquery-1.12.4.min.js'></script>
<script>
    var jQuery1 = jQuery.noConflict(true);
</script>
<script src='https://code.jquery.com/jquery-3.1.0.min.js'></script>
<script>
    // Here, jQuery1 refers to jQuery 1.12.4 while, $ and jQuery refers to jQuery 3.1.0.
</script>
https://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/