2013-06-18 58 views
1

我正在開發一個新的JS庫。我想包含JQuery作爲它的核心部分。在自定義庫中包含JQuery。如何解決衝突問題。?

我的圖書館應該適用於所有類型的網站,因此在這些網站中,JQuery可能已經包含在不同的版本中,可能有一些其他圖書館可能會與我的圖書館中的JQuery發生衝突。

jQuery.noConflict(); 

可能不是一個完整的解決方案,因爲它會從全局範圍中刪除變量。我的圖書館不想更改用戶的任何其他設置。

那麼我怎樣才能避免這些問題

  • 衝突與其他圖書館?$別名 - 可能是jQuery.noConflict();)。
  • 衝突與jQuery的其他版本,如果它已經包含在網頁中。

在此先感謝。請不要告訴不包括jQuery的正常使用JS :)

回答

3

這很簡單。

首先載入您偏好的jQuery,以及通過使用從現有的jQuery省略任何衝突得到一個句柄,

$yourJQ = window.jQuery.noConflict(true); 

使用$ yourJQ在所有您想要使用的功能的匿名範圍jQuery的。與此類似,

(function($){ 
    // external library code 

    })($yourJQ); 

希望這有助於

還可以訪問http://alexmarandon.com/articles/web_widget_jquery/

0

那麼不管你是否從全球範圍刪除變量或者不是你將不得不做一個找到&替換改變的庫點,其中jQuery的版本;因爲他們要麼在全球範圍內使用$或jQuery的&衝突,反正。你可以嘗試這樣的事:jQuery的jQuery的

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.js"></script> 
<script type="text/javascript"> 
    jQuery.noConflict(); 
    (function(window,$) { 
    window.jQuery_v1 = $; 
    })(window,jQuery); 
    delete jQuery; 
</script> 

加載第二個版本使用的

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script> 
<script type="text/javascript"> 
    jQuery.noConflict(); 
    (function(window,$) { 
    window.jQuery_v2 = $; 
    })(window,jQuery); 
    delete jQuery; 
</script> 

負載第一個版本的jQuery

的兩個版本
<script type="text/javascript"> 
    // this is now one version of jQuery 
    console.log(jQuery_v1); 
    // this is now another version of jQuery 
    console.log(jQuery_v2); 
</script>