2017-08-20 172 views
0

我在我的網站上遇到了問題。兩個庫之間的jQuery衝突

我使用兩個jQuery庫一個1.5.1和其他3.2.1。 jQuery的最新版本,我使用noConflict模式

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script> 
     var inst = jQuery.noConflict(); 
</script> 

一切正常,但是當客戶選擇在我的網站石坪方法就顯示錯誤等我的腳本不工作。

enter image description here

但jQuery庫3.2.1應在noConflict模式。網站的其他頁面沒有衝突和錯誤。

我不知道如何解決這個問題。

感謝

+0

我不確定,但您可能必須將'true'傳遞給'noConflict'。請參閱文檔https://api.jquery.com/jquery.noconflict/中有關使用多個版本的註釋(他們不建議這樣做),並且在這種情況下可能需要放棄jQuery名稱。 – pinkfloydx33

+0

我不知道爲什麼,但是當我使用它時,它根本不起作用。 – Coddy

回答

0

的jQuery .live()已在1.9版本中刪除起。

所以,你必須改變:

.live(events, function) 

應該映射到:

.on(eventType, selector, function) 

下面是引用鏈接:

http://api.jquery.com/on/

http://api.jquery.com/off/

的頁面live()顯示瞭如何轉換爲on()

http://api.jquery.com/live/

更新時間:

您可以釋放的jQuery與noConflict(true)。不過,如果你走這條路,你肯定會想一個別名既不$也不jQuery

var jq = jQuery.noConflict(true); 

或者,你可以這樣做:

var jq = $.noConflict(); 

,那麼你可以調用jQuery函數與jq

jq('#selector'); 
+0

他使用1.5.1 **和** 3.2.1,因此他期待'live'可用。使用這兩個版本使頁面工作似乎是問題的關鍵(而不是如何升級)。根據他們的文檔,他可能只需要傳遞給noConflict。雖然他們不推薦使用多個版本,但它似乎是可能的。 – pinkfloydx33

+0

好的。你是對的。所以你可以傳遞'true'或者在我更新後的答案中有一個替代方案。 –

+0

我知道live()已被刪除,因此我使用了兩個jQuery庫,其中一個是1.5.1。 我不知道爲什麼第二個jQuery庫拋出錯誤,它應該是在noConflict模式。而且這種模式在我網站的其他頁面上完美運行,除了一頁之外。 – Coddy