discuz和jquery變量名沖突的3種解決方法

字號:


    緣起于之前自己初次接觸開發(fā),做了一款插件,本地測試安裝使用的時候發(fā)現(xiàn)所有的下拉菜單都不能夠使用,鼠標(biāo)點擊沒有任何反應(yīng),diy也不能夠使用,后來經(jīng)1314學(xué)習(xí)網(wǎng)解答說明是dz和jq的$沖突!大家平時在寫模版或者插件的時候多多少少都會使用jq,不知道什么時候就會遇到?jīng)_突性問題,最近在網(wǎng)上找了很多相關(guān)教程,現(xiàn)在與大家進行分享!
    第一種答案:
    1、使用到的js文件無需修改
    2、在頁面的最頭部,也就是標(biāo)簽下的第一行開始引入,這是為了能確保該js加載在dz默認js之前。 3、在引用到該js文件的地方建$改成 jquery(注意大小寫)。 如上方式,一般都能解決大部分的js不兼容情況。如果還是米喲解決的話嘗試一下方法: 將用到的js里面的所有$君替換成jquery。
    第二種答案:
    dz使用了s()作為對象選取函數(shù),剛好與jquery默認的$()函數(shù)重合造成沖突,同樣也是為了保持原有的dz程序不被更改,所以我們要在jq上修改了。jquery.js 不需要修改這個文件。只要在引用的時候修改一下即可。例如以下代碼 是jq 的代碼。如果不做修改直接用入dz會報錯。
    代碼如下:
    <script type=text/javascript>// <![cdata[</p> <p>$j(function(){ //使用jquery
    $(p).click(function(){
    alert( $(this).text() );
    });
    }); </p> <p>$(pp).style.display = 'none'; //使用prototype
    // ]]></script>
    我們可以引用jquery給jq賦予一個變量
    代碼如下:
    var jq = jquery.noconflict();</p> <p><script type=text/javascript>// <![cdata[</p> <p>var jq = jquery.noconflict();
    jq(function(){ //使用jquery
    jq(p).click(function(){
    alert( jq(this).text() );
    });
    });
    jq(pp).style.display = 'none'; //使用prototype
    // ]]></script>
    替換之后應(yīng)該是解決js沖突問題。