2016-02-15 109 views
2

我在我的網站上使用jQuery。但是,由於Chrome插件可能會在全局範圍($)中導入自己的jQuery版本,所以如何阻止他們的jQuery(來自客戶端瀏覽器上的插件)覆蓋我的jQuery(最初由網站加載的jQuery以及建立在其上的擴展功能)。jQuery被外部插件覆蓋

+1

請參閱本[鏈接](https://api.jquery.com/jquery.noconflict/ ) – RRK

+1

但是不是沒有衝突嗎?我可以使用noConflict來放棄使用$。這是Chrome插件可以繼續使用它。但是如果我有一個龐大的代碼庫,有很多對$的引用呢?它應該是鉻插件jquery應該放棄控制權? –

+0

@Rahul,對。我會說,一個Chrome擴展會強制所有加載的頁面使用'$ .noConflict()',這是無法解決的。 –

回答

0

使用jQuery jQuery.noConflict()

<script src="other_lib.js"></script> 
<script src="jquery.js"></script> 
<script> 
$.noConflict(); 
jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
}); 
// Code that uses other library's $ can follow here. 
</script> 

更多細節請參考https://api.jquery.com/jquery.noconflict/

+1

它是一個黑客的權利,以防止可能重寫jQuery的插件,我參考jQuery作爲jQuery或$以外的東西?但是,鑑於插件的數量,這不是一個強制標準嗎? –

0

使用以下。爲解決這些情況,我們提供了jQuery.noConflict()

<script src="jquery.js"></script> 
<script> 
    var $j = jQuery.noConflict(); 
    // Code that uses other library's $ can follow here. 
</script> 
<script src="other_lib.js"></script> 
<script> 
    $j(document).ready(function(){ 
     //your code 
    }) 
</script> 

然後使用你可以在你需要使用jQuery參考的地方使用$j代替jQuery$。如果頁面上需要多個jQuery版本,則可以使用相同的方法。只需使用不同的變量。

0

會建議尋找到jQuery.noConflict,你給$/jQuery的不同的參考 - https://api.jquery.com/jquery.noconflict/

var j = jQuery.noConflict(); 

j("div p").hide(); 

// Do something with another library's $() 
$("content").style.display = "none";