關於Discuz與jQuery衝突問題的親測解決方法

最近的一個項目整合dede和discuz程序,客戶要求風格統一,因此有不少樣式及特效都是要公用的。其中jQuery庫定義的函數$()正好與discuz的comme.js中函數同樣,這樣就衝突了,致使discuz論壇全部js效果失效。網上搜羅了一下,N多的方法,可是不少說的不明不白,我也試了不少方法,浪費了我一個晚上加一個早上,真是費時費力。不過其中一個方法卻是解決了這個衝突,因此共享出來備用,也方便你們。javascript

其實解決方法卻是不難,難的是思路和沒有一個詳細的步驟,這裏我就作個詳細的說明。首先思路很簡單,就是discuz佔用了$(),那麼jQuery中我就不用這個函數,其實jQuery已經給出瞭解決方案,就是用var 自定義函數名 = jQuery.noConflict();來置換jQuery中的$,而後在jQuery中全部應用到$的地方都替換成這個自定義函數名。下面說一下步驟:java

一、打開discuz中共用的header.hrm文件,在<script type="text/javascript" src="{$jspath}common.js?{VERHASH}"></script>下面加載jQuery<script type="text/javascript" src="{$jspath}jquery.js?{VERHASH}"></script>。jquery

二、這裏兩種狀況,一種是直接在文檔中寫js代碼jsp

  1. <script language="javascript" type="text/javascript"
  2. <!--  
  3. var jq = jQuery.noConflict();
  4.     jq(document).ready(function(){  
  5.         jq("select").sSelect();  
  6.     })  
  7. --
  8. </script

這裏我自定義的函數名就是jq,還有一種狀況是外鏈一個js文件,狀況是同樣的,只要在這個js文件開頭加上var jq = jQuery.noConflict();,而後下面用到$的地方都替換爲自定義函數名jq就能夠了。函數

其實很簡單,就一句話歸納:一個思路,兩個步驟。spa

注:這個方法能夠應用到全部與jQuery因$()重複引發的衝突問題中,這裏只是一個小小的應用!xml

相關文章
相關標籤/搜索