在我的工作我總是必須使用jquery原型可以使任何自定義jquery與庫文件一樣我將添加在頭,然後不需要更改任何代碼中的任何東西。如何製作自定義,無需編輯需求,防彈jquery的noconflict版本?
是否有可能?
我不想在代碼$
到jQuery
中更改任何內容。
在我的工作我總是必須使用jquery原型可以使任何自定義jquery與庫文件一樣我將添加在頭,然後不需要更改任何代碼中的任何東西。如何製作自定義,無需編輯需求,防彈jquery的noconflict版本?
是否有可能?
我不想在代碼$
到jQuery
中更改任何內容。
這只是爲什麼不簡單地在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);
從http://www.cssnewbie.com/runing-jquery-with-other-frameworks-via-noconflict/
保持它短
的noConflict模式確實有,我已經在一些發現有用的功能,另外一個位我的項目:你可以選擇一個不同的變量來代替標準的「jQuery」。用法如下所示:
var $ j = jQuery.noConflict();
現在除了使用默認的jQuery()表示法外,我還可以使用較短的$ j()表示法。這使我可以避免遇到其他框架的問題,同時仍然享有我的代碼幾乎相同的簡潔。
的最好的事情往往是包裹$在私人範圍: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
第二個選項是否需要傳遞'jQuery'作爲參數'$'才能在anon函數中使用$別名? (從來沒有見過這樣做之前......) – prodigitalson
你是對的,如果你想使用$內部,你應該把它作爲參數傳遞。糾正。 – David
要廣告裝扮你的,你是否可以有一個「有一次」的文件,是的,你可以做類似的東西的問題:
/* 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
這種方式絕對有效,但您需要將所有調用更改爲'$'到'$ j'。 – prodigitalson
這就是我所做的一切,但如果你從一開始就這樣做,顯然是最簡單的。海事組織,它是最好的方式,因爲你也可以面向將來可能使用'$'的任何其他庫。 – Graza