[英]JQuery - multiple versions on the same page - breaking functionality
要求在完成加載后在頁面上加載自定義Javascript,即使用第三方工具在頁面加載后在網站的實時頁面上執行。
現在來看這個問題,該頁面上有許多依賴於Javascript的元素,這些元素已使用jquery 1.6.2版進行了編碼。 我需要執行的運行時腳本需要jquery版本1.10.x。 請參見下面的代碼。
$('body').append('<script type="text/javascript" src="http://www.mywebsite.com/min/lib/jquery-1.10.2.js"></script>');
$('body').append('<script type="text/javascript" src="http://www.runtimetool.com/mycustom.js"/>');
一旦應用了第一行代碼,由於現有代碼與Jquery 1.10.x版本的某些沖突,頁面上的原始功能就會中斷。
因此,我嘗試像在其他類似問題上建議的那樣使用noConflict:
$('body').append('<script type="text/javascript" src="http://www.mywebsite.com/min/lib/jquery-1.10.2.js"></script>');
var $j = jQuery.noConflict(true);
$('body').append('<script type="text/javascript" src="http://www.runtimetool.com/mycustom.js"/>');
另外,我將文件“ mycustom.js”更改為使用$ j代替jquery的$。 但是我仍然有同樣的問題。 如何防止JQuery 1.10.x破壞現有頁面。
提前致謝。
[編輯]
使用Austin的建議,可以調整加載庫的時間。 下面的代碼現在可以工作了。
var $jQuery1_6_2 = jQuery.noConflict(true);
$jQuery1_6_2('body').append('<script type="text/javascript" src="http://www.mywebsite.com/min/lib/jquery-1.10.2.js"></script>');
$jQuery1_6_2('body').append('<script type="text/javascript" src="http://www.runtimetool.com/mycustom.js"/>');
setTimeout(function(){
$jQuery1_10_2 = jQuery.noConflict(true);
$ = $jQuery1_6_2;
jQuery = $jQuery1_6_2;
//Logic to use Jquery 1.10 using '$jQuery1_10_2'
}, 1000);
嘗試不沖突1.6.2,然后加載新版本,然后將對$
的引用重置為1.6.2。
var $jQuery1_6_2 = jQuery.noConflict(true);
(function($) {
$('body').append('<script type="text/javascript" src="http://www.mywebsite.com/min/lib/jquery-1.10.2.js"></script>');
$jQuery1_10_2 = jQuery.noConflict(true);
$('body').append('<script type="text/javascript" src="http://www.runtimetool.com/mycustom.js"/>');
})($jQuery1_6_2);
$ = $jQuery1_6_2;
然后在您的腳本文件中
(function($){
})($jQuery1_10_2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.