首頁  >  文章  >  web前端  >  如何解決Jquery函式庫及其他函式庫之間的$命名衝突_jquery

如何解決Jquery函式庫及其他函式庫之間的$命名衝突_jquery

WBOY
WBOY原創
2016-05-16 17:22:301199瀏覽

首先我們應該知道,在jquery中,$(美元符號)就是jquery的別名,也就是說使用$和使用jquery是一樣的,在很多時候我們命名空間時,正是因為這個$而產生的衝突的發生。比如說:$('#xmlas')和JQuery('#xmlas') 雖然在寫法上不同,但實際上卻是完全等同的。

要想解決這個衝突,其實最簡單的方法就是使用不同的名稱來命名,或是讓執行程式碼認為是不同的命名空間即可。

一、 jQuery函式庫在其他函式庫之前導入,直接使用jQuery(callback)方法如:

複製代碼 代碼如下:










test---prototype


test---jQuery

$("pp").style.display = 'none'; //使用prototype



二、jQuery函式庫在其他函式庫之後導入,使用jQuery.noConflict()方法將變數$的控制權讓渡給其他函式庫,有以下幾種方式:

複製代碼 代碼如下:


代碼二

複製代碼 代碼如下:


代碼三

複製代碼 代碼如下:




程式碼四

複製代碼 代碼如下:


除了上面的方法之外,我們還可以採用第二種方法來解決衝突的問題,那就是最笨但最有效的解決方法:用自訂的命名空間來避免衝突。
比如說需要的專案名稱為xmlas,那麼我們原來的程式碼:

複製程式碼 程式碼如下:

$('contentArea').show()

就可以寫成以下這種形式:

複製代碼 代碼如下:

XMLAS('contentArea').show()


3.在jquery程式碼中,當遇到衝突的時候我們可以使用$符號,這需要我們在ready事件中添上以下程式碼:

複製程式碼 程式碼如下:

jQuery(document).ready(function($) {
//你在這裡可以放心的使用$了
});

當然,您也可以簡寫成下面的形式:

複製程式碼 程式碼如下:

jQuery(function($){ //這裡為使用$的程式碼
});

由此,根據第一個方法來實現的完整程式碼如下:

複製程式碼 程式碼如下:
//jquery解決程式庫與其他函式庫衝突的完整解決方案




 
當然,你也可以對上面的完整程式碼進行一步的簡化,簡化程式碼如下:


複製程式碼 程式碼如下:
//簡化後的程式碼
$.noConflict()(function(){
//這裡是你的帶$的jquery程式碼
});
//這裡是其他函式庫的程式碼

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn