如果我介紹的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)覆蓋。
有沒有方法來避免改寫?
你試過了嗎?你看到了什麼? – epascarello
如果您需要2個版本,請使用noConflict()進行設置 - 儘管我認爲這是一個糟糕的主意。 http://stackoverflow.com/questions/1566595/can-i-use-multiple-versions-of-jquery-on-the-same-page –
你的意思是相同/不同版本的jquery? – Swarne27