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(

保存好所有文件,更新一下緩存,不兼容的問題就一下煙消雲散了。