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