如何:jQuery函數語法差異
(function($) {
/// code
})(jQuery)
jQuery中從$(document).ready(function()
有什麼不同?
我知道ready
函數是做什麼的。它會一直等到HTML加載完成後再啓動。但是,(function($)
也一樣嗎?
如何:jQuery函數語法差異
(function($) {
/// code
})(jQuery)
jQuery中從$(document).ready(function()
有什麼不同?
我知道ready
函數是做什麼的。它會一直等到HTML加載完成後再啓動。但是,(function($)
也一樣嗎?
的 「速記」 爲$(document).ready()
簡直是$()
:
//both do the same thing
$(document).ready(function(){
//run when DOM is ready
});
$(function(){
//run when DOM is ready
});
然而,你的第一個代碼是不一樣.ready()
。你有什麼是immediately-invoked function expression (IIFE),或外行的方面,「立即運行該功能」
//both are the same
(function($) {
//run stuff here immediately!
})(jQuery) //arguments outside wrapping parenthesis
(function($) {
//run stuff here immediately!
}(jQuery)) //arguments inside wrapping parenthesis
這剛好等於像這樣「功能和通話」,但不函數名(匿名函數)和呼叫:
function functionWithNoName($){
//"jQuery" in the call is "$" in here
}
functionWithNoName(jQuery)
此方法通常用於保護使用$
jQuery的,而其他的LiBr代碼aries使用相同的$
函數名稱,thus prevent conflicts。jQuery的只是使用$
的速記別名jQuery
(你不想鍵入jQuery('selector')
所有的時間,$('selector')
較短)的
(function($) {
//run jQuery using the "$" safely in here
}(jQuery))
//while some other libraries like mootools use "$" out here
我知道ready函數的作用。它會一直等到HTML加載完成後再啓動。但是,
(function($) { ... })()
也一樣嗎?
不,它不。它在(和每當)控制達到該語句時立即執行。
嘗試運行
$(document).ready(function() { alert('happens second'); });
(function($) {
alert('happens first');
})(jQuery);
看到這樣的第一手資料。
(function($) {
/// code
})(jQuery)
這是一個自動執行的匿名函數,只要JavaScript解釋器讀取它就會執行塊內的代碼。
這不是要與下面的語句,這相當於jQuery的準備困惑:
$(function() {
// code
});
$(document).ready(function() {
// code
});
這些jQuery的準備職能將DOM後,只執行已完成加載的所有元素(圖片可以採取相當長時間連接速度慢)。
第一個和最後兩個不相等,自執行函數將始終發生在jQuery就緒函數之前,有時很長時間取決於頁面的大小和用戶連接的速度。
可能重複[這些jQuery的準備功能之間的區別是什麼?(HTTP: //stackoverflow.com/questions/2662778/what-is-the-difference-between-these-jquery-ready-functions) – epascarello 2012-03-19 00:11:30