2010-01-25 30 views

回答

3

這只是爲什麼不簡單地在Prototype中實現所有的東西 - 或者在jQuery中實現所有東西。總的來說,它們都具有相同的功能。

但是,要直接回答你的問題 - 其實並不是一種真正的自定義構建jQuery的方法。但是,您可以在包含jQuery庫後立即將您的noConflict調用放入。

然後爲你的東西,你可以簡單地把它包裝都在

(function($){ 
    // your jQuery code here... Can be used with $ as normal. 
})(jQuery); 

該函數內你會能夠使用$作爲別名 - 在它之外,你將需要使用jQuery。這裏唯一的問題是,如果你希望在這裏定義的變量是全局變量,那麼你需要手動創建變量,因爲這裏的所有變量都將被限定在函數中。你可以這樣做,像這樣:

(function($){ 
    window.myGlobalVar = 'This is a global variable'; 
})(jQuery); 
3

http://www.cssnewbie.com/runing-jquery-with-other-frameworks-via-noconflict/

保持它短

的noConflict模式確實有,我已經在一些發現有用的功能,另外一個位我的項目:你可以選擇一個不同的變量來代替標準的「jQuery」。用法如下所示:

var $ j = jQuery.noConflict();

現在除了使用默認的jQuery()表示法外,我還可以使用較短的$ j()表示法。這使我可以避免遇到其他框架的問題,同時仍然享有我的代碼幾乎相同的簡潔。

+1

這種方式絕對有效,但您需要將所有調用更改爲'$'到'$ j'。 – prodigitalson

+1

這就是我所做的一切,但如果你從一開始就這樣做,顯然是最簡單的。海事組織,它是最好的方式,因爲你也可以面向將來可能使用'$'的任何其他庫。 – Graza

0

的最好的事情往往是包裹$在私人範圍:http://api.jquery.com/jQuery.noConflict/

另一個乾淨的選項鍊接的noConflict()

(function($) { 
    // jQuery stuff 
})(jQuery) 

您還可以在包裝之前調用jQuery.noConflict()功能進入domReady回調:

jQuery.noConflict()(function($){ 
    // code using jQuery or $ 
}); 

console.log(typeof $ === 'undefined') // prints true 
+0

第二個選項是否需要傳遞'jQuery'作爲參數'$'才能在anon函數中使用$別名? (從來沒有見過這樣做之前......) – prodigitalson

+0

你是對的,如果你想使用$內部,你應該把它作爲參數傳遞。糾正。 – David

0

要廣告裝扮你的,你是否可以有一個「有一次」的文件,是的,你可以做類似的東西的問題:

/* MyLibLoader.js */ 
document.write("<script type='text/javascript' src='prototype.js'></script>"); 
document.write("<script type='text/javascript' src='jquery.js'></script>"); 
window.$j = jQuery.noConflict(); 

然後在HTML

<head> 
    <script type='text/javascript' src='MyLibLoader.js'></script> 
</head> 

但這種方法假定你很高興將您的jQuery使用改爲$j