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 的源代碼,在文件的最後添加
- jQuery.noConflict();
2 、替換 js 特效文件中的 $符號
打開 js 特效文件,搜索
- $(
替換為
- jQuery(
保存好所有文件,更新一下緩存,不兼容的問題就一下煙消雲散了。