2012-12-17 53 views
1

如果我介紹的jquery.js到頁面兩次(有意或無意),會發生什麼?如果jquery.js包含在頁面中兩次?

有jQuery的任何機制可以處理這種情況呢?

據我所知,後來一個jQuery將覆蓋前一個,如果有一些動作與前一個結合,它會被清除。

我能做些什麼,以避免以後一個覆蓋前一個?

===編輯===

我不明白爲什麼這個問題得到了下來票。做出決定的人可以給出答案嗎?

==再次編輯== @ user568458

你是對的,現在它的測試代碼:

<html> 
<head> 
</head> 
<body> 
fast<em id="fast"></em><br> 
slow<em id="slow"></em><br> 
<em id="locker"></em> 
</body> 
<script type="text/javascript"> 
function callback(type){ 
    document.getElementById(type).innerHTML=" loaded!"; 
    console.log($.foo); 
    console.log($); 
    console.log($.foo); 
    $("#locker").html(type); 
    console.log($("#locker").click); 
    $("#locker").click(function(){console.log(type);}); 
    $.foo = "fast"; 
    console.log($.foo); 
} 
function ajax(url, type){ 
    var JSONP = document.createElement('script'); 
    JSONP.type = "text/javascript"; 
    JSONP.src = url+"?callback=callback"+type; 
    JSONP.async = JSONP.async; 
    JSONP.onload=function(){ 
     callback(type); 
    } 
    document.getElementsByTagName('head')[0].appendChild(JSONP); 
} 
</script> 
<script> 
ajax("http://foo.com/jquery.fast.js", "fast"); 
ajax("http://foo.com/jquery.slow.js", "slow"); 
</script> 
</html> 

它產生的結果:

undefined test:12 
function (a,b){return new e.fn.init(a,b,h)} test:13 
undefined test:14 
function (a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)} test:16 
fast test:19 
undefined test:12 
function (a,b){return new e.fn.init(a,b,h)} test:13 
undefined test:14 
function (a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)} test:16 
fast 

標記 「$」之前的一個(jquery.fast.js)被後面的(jquery.slow.js)覆蓋。

有沒有方法來避免改寫?

+1

你試過了嗎?你看到了什麼? – epascarello

+0

如果您需要2個版本,請使用noConflict()進行設置 - 儘管我認爲這是一個糟糕的主意。 http://stackoverflow.com/questions/1566595/can-i-use-multiple-versions-of-jquery-on-the-same-page –

+0

你的意思是相同/不同版本的jquery? – Swarne27

回答

-1

我也試試這個代碼:

<html> 
<head> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript"> 
      $(function() { 
        $('#try').click(function() { 
          alert('ok'); 
        }); 
      }); 
    </script> 
    <script type="text/javascript" src="jquery.js"></script> 
</head> 
<body> 

<button id="try">Try me</button> 

</body> 
</html> 

沒有happend。點擊我有一個提醒。如果第二個jquery.js加載在按鈕之前或之後的body標籤中,結果相同。

+0

實際上你的例子中的JavaScript加載在塊模式,所以如果我做併發負載? – dennisyuan

相關問題