素聞在 Discuz 模板中使用 JQUERY 時會出現衝突,因為改 Discuz 程序較少,所以一直沒有親見,今天在給 MJJer 論壇添加個性化工能時用到 JQUERY,發現只要加載 JQUERY.MIN.JS 文件模板就會出現 JS 錯誤。
查找了相關資料,原來是 Discuz 中自定義了獲取特定 ID 內容的函數使用了 $符號,直接與 JQUERY 的 $選擇器衝突。還好 jquery 留了一手,預留了在發生衝突時的解決辦法:即使用 jQuery.noConflict() 方法
XML/HTML 代碼
| var j = jQuery.noConflict(); |
重新定義一個選擇器 j 後即可用 j 代替 $使用了,給 id=load 的 div 加內容即可用 j("#load").html("要添加的內容");
不過,落葉在模板中間使用時還是會出錯,開始的解決辦法是在 Discuz 模板使用第一個 $之前就申明 var j = jQuery.noConflict(); 以消除衝突,似乎有些作用,不過偶爾還是會出錯。
後來才想到,直接在模板最後即 foot.html 文件最後調用 jquery.min.js 然後再使有 jQuery.noConflict() 方法不就行了,結果還真是行得通,沒有再報錯。
至於 Discuz 用到 $,又沒有多大功能,不知作何考慮?故意為之?