午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

解決同一頁面jQuery多個(gè)版本或和其他js庫沖突方法

 瑤疏影 2017-03-16
      jQuery多個(gè)版本或和其他js庫沖突主要是常用的$符號(hào)的問題,這個(gè)問題 jquery早早就有給我們預(yù)留處理方法了,下面一起來看看解決辦法。

1.同一頁面jQuery多個(gè)版本或沖突解決方法

 代碼如下 復(fù)制代碼

<!DOCTYPE html>

<html lang="en" xmlns="http://www./1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>jQuery測試頁-</title>
</head>
<body>
    <!-- 引入 jquery 1.8.0 -->
    <script type="text/javascript" src="http://code./jquery-1.8.0.min.js"></script>
    <script type="text/javascript">
        var $180 = $;
    </script>
    <!-- 引入 jquery 1.9.0 -->
    <script type="text/javascript" src="http://code./jquery-1.9.0.min.js"></script>
    <script type="text/javascript">
        var $190 = $;
    </script>
    <!-- 引入 jquery 2.0.0 -->
    <script type="text/javascript" src="http://code./jquery-2.0.0.min.js"></script>
    <script type="text/javascript">
        var $200 = $;
    </script>

    <script type="text/javascript">
        console.log($180.fn.jquery);
        console.log($190.fn.jquery);
        console.log($200.fn.jquery);
    </script>
</body>
</html>

解決同一頁面jQuery多個(gè)版本或和其他js庫沖突方法

2.同一頁面jQuery和其他js庫沖突解決方法

①.jQuery在其他js庫前

 代碼如下 復(fù)制代碼


<!DOCTYPE html>

<html lang="en" xmlns="http://www./1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>jQuery測試頁-</title>
</head>
<body>
    <!-- 引入 jquery 1.8.0 -->
    <script type="text/javascript" src="http://code./jquery-1.8.0.min.js"></script>
    <script type="text/javascript">
        var $180 = $;
        console.log($.fn.jquery);
    </script>
    <!-- 引入 其他庫-->
    <script type="text/javascript">
        $ = {
            fn:{
                jquery:""
            }
        };
    </script>

    <script type="text/javascript">       
        console.log($.fn.jquery);
        console.log($180.fn.jquery);
    </script>
</body>
</html>

解決同一頁面jQuery多個(gè)版本或和其他js庫沖突方法

②.jQuery在其他js庫后

 代碼如下 復(fù)制代碼


<!DOCTYPE html>

<html lang="en" xmlns="http://www./1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>jQuery測試頁-</title>
</head>
<body>
    <!-- 引入 其他庫-->
    <script type="text/javascript">
        $ = {
            fn:{
                jquery:""
            }
        };
    </script>
    <!-- 引入 jquery 1.8.0 -->
    <script type="text/javascript" src="http://code./jquery-1.8.0.min.js"></script>

    <script type="text/javascript">   
        console.log($.fn.jquery);   
        var $180 = $.noConflict();
        console.log($.fn.jquery);
        console.log($180.fn.jquery);
    </script>
</body>
</html>

解決同一頁面jQuery多個(gè)版本或和其他js庫沖突方法 

再補(bǔ)充一下方法

方案1:
引入noConflict(),將$替換為其他符號(hào)

 

 代碼如下 復(fù)制代碼
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j("#btn1").click(function(){
alert("Text: " + $j("#test").text());
});
});

缺點(diǎn):引入了這段代碼后,不僅是當(dāng)前的js文件,該html引用的所有js中,如果有用到j(luò)query中的$,都得用$j來代替之前的$

方案2:

 代碼如下 復(fù)制代碼
ready函數(shù)是jquery的入口函數(shù),可以
將$(document).ready(function(){
替換成
jQuery( document ).ready(function( $){}

缺點(diǎn):只對(duì)ready嵌套內(nèi)的代碼有效,對(duì)嵌套外的代碼是無效的。如果你所有的邏輯,都在寫ready函數(shù)中,那沒問題。但我們一般都會(huì)在ready函數(shù)之外寫一些子函數(shù),然后ready函數(shù)再去調(diào)用這些函數(shù)。這個(gè)方案對(duì)這些函數(shù)是無效的,因此這套方案有局限性。

方案3(推薦,特別是開發(fā)js插件時(shí)):

給js內(nèi)容包上一個(gè)函數(shù)

 代碼如下 復(fù)制代碼


jQuery(function($){
//你的js代碼放在這里(例如第二個(gè)方案提到的ready函數(shù)和子函數(shù))
//如果是js文件,其實(shí)就是在文件頭部和尾部各加一行代碼
}

或者


(function($) {
//你的js代碼
})(jQuery);

這個(gè)方法,沒有上面兩個(gè)方案的缺點(diǎn),只會(huì)影響到被包在jQuery(function($){}中的代碼。
不會(huì)影響到其他js代碼,這一點(diǎn)很重要。試想一下,假如你寫了一個(gè)js公共組件,該組件需要用到j(luò)query,為了提高魯棒性,需考慮$符號(hào)沖突問題。如果使用方案1,那么別人在使用時(shí),還得遵守你的約定,把自己js代碼中的$改成$,而如果使用方案3,既能避免$沖突對(duì)該組件的影響,又無需要求使用公共組件的人修改自己的代碼。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多