用過Discuz的都知道Discuz與jQuery不兼容,會(huì)造成DIY功能和下拉菜單無法使用,以前經(jīng)常遇到這個(gè)問題都是跳過去,今天跳不過去了只好硬著頭皮找方法,網(wǎng)上相關(guān)方法很多,但對于不熟悉Javascript的人來說看了都是一頭霧水,下面來講一講如何解決這個(gè)問題。
一、沖突原因
jQuery是通過一個(gè)全局變量$來引用的,而Discuz的common.js文件加載時(shí)也占用了$。因而沖突的根源就是全局變量$。說得明白點(diǎn):當(dāng)jQuery和common.js共存的時(shí)候,$究竟是誰?
分析jQuery和common.js的源代碼可以知道,這兩個(gè)庫在加載的時(shí)候都會(huì)占用$變量。因此,按照覆蓋的原理,誰后加載,$變量就是誰。
二、解決思路
除了$,jQuery還占用了另外一個(gè)變量作為別名,這個(gè)別名就是庫本身的名稱jQuery
在jQuery下$和jQuery是同樣的意思,所以我們可以將$送給common.js來使用,而jQuery使用jQuery這個(gè)代號(hào)。
除了common.js和jQuery.js文件,一般還會(huì)涉及到一個(gè)控制特效的js文件,了解了這些問題后就可以進(jìn)行下面的操作了。
三、解決沖突的方法
1、將$送給common.js
打開jQuery的源代碼,在最后面添加
2、替換特效JS文件中的$符號(hào)
打開特效JS文件,搜索$替換為jQuery
調(diào)用jQuery中的方法時(shí)用別名jQuery.不要用$.
保存好所有文件,更新一下緩存,問題就都解決了,看看是不是不沖突了。
Discuz與JQuery不兼容的解決方案 |