我知道在jQuery中,$(callback)
與jQuery(callback)
相同,它與$(document).ready()
具有相同的效果。
如何
jQuery(function($) {
});
能有人給我解釋一下,這是什麼樣的功能呢?
它有什麼作用?
這個和$(callback)
有什麼區別?
這個和$(function())
有什麼區別?
我知道在jQuery中,$(callback)
與jQuery(callback)
相同,它與$(document).ready()
具有相同的效果。
如何
jQuery(function($) {
});
能有人給我解釋一下,這是什麼樣的功能呢?
它有什麼作用?
這個和$(callback)
有什麼區別?
這個和$(function())
有什麼區別?
jQuery(function($) {
});
是三個最安全的版本。它使得局部變量爲$
,從而優雅地避免與可能使用符號的任何其他變量的衝突。
我認爲它也被加入最近,不記得以前見過它。
這些功能都做同樣的事情 - 執行一些代碼時,DOM已準備就緒。 $(document).ready(function(){})是原始的,它匹配底層javascript API。
「$」和「jQuery的」作爲一個參數被作爲快捷方式,以避免重複這樣的構建體共同創建了接受功能。接受一個接受$作爲第一個參數的函數是一個進一步的語法糖 - 現在,您可以方便地使用閉包,而無需自行完成。
所以我糾正了這一點,如果你讀了第一個評論,它給出了一些上下文。
jQuery(function() {
// Document Ready
});
(function($) {
// Now with more closure!
})(jQuery);
我不是100%確定,但我認爲這只是將jQuery對象傳遞給閉包。我會在谷歌上進行一些挖掘,看看我是對還是錯,並會相應更新。
編輯:
我是非常正確的,但在這裏它是直接從他們的網站:
http://docs.jquery.com/Plugins/Authoring
「哪裏是我真棒美元符號,我知道,愛它仍然存在,但爲了確保您的插件不會與其他可能使用美元符號的庫衝突,最好將jQuery傳遞給一個將其映射到美元符號的自執行函數(閉包),以便它不能被在其執行範圍內被另一個圖書館覆蓋。「
-1爲您第一線的簡寫。有一個很好的理由這樣做:如果你使用'$ .noConflict();'來恢復包含jQuery之前的'$',你可以在你的函數中使用'$'(ready ready回調接收jQuery對象作爲第一個參數),而不是將所有內容都包含在另一個匿名函數中。 – ThiefMaster
你會在文檔中做到這一點嗎?很公平,我會同時更新這篇文章和我自己的常識。感謝您的澄清。 – Seth
取決於 - 如果你想寫的只是一個document.ready函數,這是有道理的。如果在document.ready函數之前/之後有任何其他代碼使用jQuery,我肯定會使用'(function($){...})(jQuery);'方法 – ThiefMaster
首先,jQuery()
是不一樣的$(document).ready()
$()
爲jQuery()
和快捷...
$(function(){ ...});
爲$(document).ready(function(){ ... });
因此快捷方式:
jQuery(function(){ ... })
將起作用一樣
$(document).ready(function({ ... });
但是...
jQuery('#foo').css("background-color", "#f00");
不會起作用一樣
$(document).ready('#foo').css("background-color", "#f00");
所以...
jQuery()
是不一樣$(document).ready()
嗯......我很確定這是如果你通過一個函數裏面? –
是的,如果一個函數被傳遞,使用匿名函數快捷方式,二者將執行相同的操作。但是說'jQuery()'和$(document).ready()'是一樣的錯誤陳述。 – Mutt
$(function())
是語法錯誤。$()
創建一個空的jQuery對象。$(document).ready(function() { ... })
當DOM準備$(function() { ... })
是同一事物的快捷方式jQuery(function($) { ... })
這樣做,太,但它也使內部功能$
可不管它的外面設置爲執行給定的功能。當你調用主jQuery的工廠函數(無論是作爲jQuery(<something>)
或常用快捷$(<something>)
)它決定基於對<something>
類型什麼。
如果你傳遞一個字符串作爲<something>
它假定是選擇規範,將返回選擇匹配元素的jQuery的列表。
如果你傳遞一個jQuery對象(代表元素的列表,即從以前的調用返回的jQuery對象),它只會返回一個對象(本質上這是一種非手術)。
如果您傳遞一個DOM元素,它將返回一個包含該元素的jQuery列表(這樣您就可以將jQuery方法應用到該元素)。這就是$(document).ready()
的情況 - 您將工廠函數傳遞給DOM元素「document」,它返回一個代表該元素的jQuery對象,並且使用該對象的ready()方法將事件處理函數添加到所有ready事件中列表中的DOM元素(在這種情況下,只有一個,即document
)。
如果你傳遞一個函數,這僅僅是「跑這當一切準備就緒,你這樣做」,所以$(function() { ... });
相當於$(document).ready(function() { ... });
我喜歡你的回答(如果它是正確的),很清楚的解釋:) – Leem