以下假設是否準確?jquery匿名函數聲明的含義
1)立即執行
(function(){
})();
2)上執行文件準備
$(document).ready(function(){
});
3)的簡寫用在文檔準備
$(function(){
});
4)替代簡寫上文件準備用於避免交叉腳本衝突
(function($) {
})(jQuery);
以下假設是否準確?jquery匿名函數聲明的含義
1)立即執行
(function(){
})();
2)上執行文件準備
$(document).ready(function(){
});
3)的簡寫用在文檔準備
$(function(){
});
4)替代簡寫上文件準備用於避免交叉腳本衝突
(function($) {
})(jQuery);
是你的定義是正確的,第3 :)
雖然,除非你需要一個封閉,一個語句將立即執行,沒有理由把它包起來像#1(當然也有很多有效的時間你需要關閉,只是注意如果你不......這是多餘的)。然而
4號是不正確的,(function($) { })(jQuery);
不依賴於任何情況下,它只是一個封閉,使$ === jQuery
裏面的,所以你可以使用$
快捷:
(function($) {
//You may use $ here instead of jQuery and it'll work...even if $ means
//something else outside of this closure, another library shortcut for example
})(jQuery);
非常豐富的答案。 Number 4主要用於防止自$ jquery文件被加載後在全局範圍內覆蓋$! – 2010-05-28 17:26:38
@ yaya3 - 是的,通常是['.noConflict()'](http://api.jquery.com/jQuery.noConflict/)讓另一個庫控制'$'的結果。但是,如果你想'document.ready'並且沒有衝突,那麼也有一個簡短的版本,jQuery將它自己作爲參數傳遞給ready處理程序,所以'jQuery(document).ready(function($){});'或者較短的'jQuery(function($){});'獲得'''傳遞進來,更多的本地''== === jQuery'裏面以及代碼在'document.ready'上觸發,漂亮整潔。或者使用任何其他名稱:),例如'jQuery(function(myVar){myVar('#myElem')。hide();});' – 2010-05-28 17:30:30
太棒了,在這裏學到了很多東西。謝謝 – 2010-05-28 17:31:51
這裏的#4你正在尋找:
jQuery(function ($) {
});
它將運行在document.ready上,命名空間內,並定義爲$的jQuery。
這樣寫出來的輝煌的方式,將給我們帶來美元的力量,而不會帶來負面影響。 – rncrtr 2012-08-13 18:03:05
最後一個常用於定義插件。 – 2010-05-28 17:08:43
編輯你的編號給它更好的代碼格式,降價不喜歡直接在數字之下的代碼,無論出於何種原因:) – 2010-05-28 17:14:04
乾杯尼克,很好的 – 2010-05-28 17:19:22