2011-08-24 67 views
1

我們正在使用第三方java腳本庫來實現拖放,壓延等功能。現在正計劃將這些控件移至jQuery中去。&效果。以編程方式在jQuery庫和第三方庫之間切換

第三方使用$(DOMElement)像jQuery一樣將擴展方法添加到控件中(比如將文本框轉換爲日曆)。 jQuery也使用相同的語法。

我們並不完全用jQuery取代第三方庫。所以在某些地方$(元素)應該引用第三方庫,而在同一頁面的某些地方,它應該引用jQuery。

有沒有一種方法來編程指定$(元素)應該引用哪個庫。

在此先感謝..

回答

1

可能使用jQuery noConflict(),但它會少只分配了jQuery別的工作

所以使用jQuery( '項目 '),而不是$(' 項目' )

如果歐想保持的東西短:

var x = {}; 
x.query = jQuery.noConflict(true); 

,然後再在你快樂的方式

x('.item') 
+0

Jus需要澄清,在此之後,x.query = jQuery。 noConflict(真); x是指jQuery還是其他API? – Raghav

+0

在這個例子中,x是指jQuery。你可以通過說var x = {}; x = $; ----- $引用舊庫 – wesbos

+0

我使用了以下解決方案 var x = $; $ .noConflict(); //使用$作爲第三部分API參考的代碼。 $ = x; //使用$作爲jquery引用的代碼。 – Raghav

3

使用jQuery.noConflict();這樣。

jQuery.noConflict(); 
(function($) { 
    $(function() { 
     // more code using $ as alias to jQuery 
    }); 
})(jQuery); 

$只是jQuery對象的別名。所以,或者,你可以這樣做。

jQuery.noConflict(); 
// Do something with jQuery 
jQuery("div p").hide(); 
// Do something with another library's $() 
$("content").style.display = 'none'; 
+0

感謝您的解決方案..你可以告訴我noConflict()的範圍。如果我在其中一個js文件中做,那麼其他js文件也會看到這個,noConflict()? – Raghav

+0

只記得在任何其他jQuery代碼之前提供它。 http://stackoverflow.com/questions/6430769/how-to-work-with-jquery-no-conflict-mode-and-multiple-script-locations – naveen