2012-08-17 49 views
2

我正在爲具有我不想因更新問題而更改的代碼庫的應用程序使用插件。使用多個JQuery版本和noConflict

該應用程序在頭中包含Jquery 1.3.2,並在整個站點中大量使用它。 不考慮這個問題,我繼續使用1.8.0版本編寫我的插件 ,事實證明這會弄亂原始應用程序的功能。

我一直在嘗試實施noConflict方法,但沒有成功。

# Site loads jQuery1.32 and other jQuery plugins 

# My awesome php & html code 

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.js"></script> 
<script type="text/javascript"> 
var $jq = jQuery.noConflict(true); 
$jq.DoSomeJQueryStuff(); 
</script> 

如何在此場景中實現noConflict?

+0

你問的是如何從v1.3代碼調用你的v1.8插件? – nnnnnn 2012-08-17 07:27:54

回答

0

我覺得它就像你需要的東西。

如果我們假設這些鏈接順序補充說:

  1. jQuery的1.3.2.js
  2. jQuery的1.8.0.js

我們有這樣的:

jQuery.noConflict(); 

// here you can execute javascript with jquery version 1.3.2 
console.log($.fn.jquery); 


jQuery(function($){ 
    // here you can execute javascript with jquery version 1.8.0 
    console.log($.fn.jquery); 
}); 

你可以在Jsfiddle找到一個例子。

1

您需要先打電話noConflict()(或兩者兼而有之)。如果沒有在第一個實例上調用它,在下面包含腳本定義的時候就會出現「衝突」。

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script> 
<script type="text/javascript"> 
    var $jQ180 = jQuery.noConflict(true); 
    document.write($jQ180().jquery); // 1.8.0 
</script>​ 

... 

<script type="text/javascript" src="http://code.jquery.com/jquery-1.3.2.js"></script> 
<script type="text/javascript"> 
    document.write($().jquery); // 1.3.2 
</script> 
+0

問題是我不想使用1.3.2 – Artmann 2012-08-17 07:44:49

+0

來更改任何代碼是否可以首先定義1.8?例如,如果您可以在1.3.2定義的上方放置1.8,並調用noConflict(),那麼我認爲您會沒事的。 – 2012-08-17 07:47:07

+0

這項工作,但它迫使我改變我試圖避免的主應用程序頭的代碼 – Artmann 2012-08-17 07:55:45