jQuery 是一個強大優秀的 Javascript 框架,但是當在 Discuz X 上引入其所編寫的特效時會有不相容的問題,其常見的表現為引入 jQuery 後 DIY 功能和下拉選單無法使用。

其原因是由於 jQuery 是透過一個全域性變數 $來引用物件,而 Discuz X 的 common.js 檔案載入時也使用了 $來引用,這就造成了可能 jQuery 功能有問題或者是下拉選單無法使用的問題,其具體表現是後載入的功能正常,先載入的功能失效。

解決思路

對於 jQuery 除了 $還有另外一個全域性呼叫物件的方法,這個就是使用庫本身的名稱 jQuery 。

在 jQuery 下 $("div"); 和 jQuery("div"); 是同樣的意思,所以我們可以將 $送給 common.js 來使用,而 jQuery 使用自己所有的 jQuery,這樣就可以根本解決全域性使用衝突的問題了。

除了 common.js 和 jQuery.js 檔案,一般的還會涉及到一個控制特效的 js 檔案,特效 js 檔案用到的 $方法也要修改。

具體方法
1 、 $讓給 common.js 使用,而 jQuery 使用 jQuery
開啟 jQuery 的原始碼,在檔案的最後新增

  1. jQuery.noConflict();

2 、替換 js 特效檔案中的 $符號
開啟 js 特效檔案,搜尋

  1. $(

替換為

  1. jQuery(

儲存好所有檔案,更新一下快取,不相容的問題就一下煙消雲散了。