<script>
jQuery(function($) {
$('#container').jstree();
});
</script>
$
傳遞到匿名函數,這是什麼意思?
<script>
jQuery(function($) {
$('#container').jstree();
});
</script>
$
傳遞到匿名函數,這是什麼意思?
美元符號($)實際上是jQuery函數的別名。根據文檔,如果您將回調作爲參數傳遞給此函數,則會在DOM準備就緒時執行。
那即使我明白......你能添加一個簡單化的版本聽起來太技術請? – AaronHatton
$
是jQuery
的別名。
所以,你也可以寫jQuery('#container').jstree();
值得注意的是,'$'只是javascript中一個有效的變量名 - 像'a'或'b'--並非內在的魔法。這在我幾年前第一次學習時並不明顯。 –
另外值得注意的是,問題是關於匿名函數,而不是其內容。 – JJJ
jQuery(function($) {
// Your code using failsafe $ alias here...
});
和
$(function() {
// Document is ready
});
同時使用快捷方式$(文件)。就緒()和參數 寫使用$別名故障安全jQuery代碼,而不依賴於 全球別名。
它使「$」爲局部變量,從而優雅地避免與任何其他可能使用「$」符號的變量的衝突。
這些功能都做同樣的事情 - 執行一些代碼時,DOM已準備就緒。
「$」和「jQuery的」作爲一個參數被作爲快捷方式,以避免重複這樣的構建體共同創建了接受功能。接受一個接受$作爲第一個參數的函數是一個進一步的語法糖 - 現在,您可以方便地使用閉包,而無需自行完成。
jQuery() — which can also be written as $() — searches through the DOM ...
因此:
$("div.foo");
等於jQuery("div.foo");
http://api.jquery.com/jQuery/#jQuery3
jQuery(function($) { // Your code using failsafe $ alias here... });
簡而言之: $是指由JQuery設置來表示自身的全局變量。
在不那麼短: JavaScript變量命名約定允許你開始以「$」變量「_」或類別的任何有效的Unicode字符「大寫字母(陸)」,「小寫字母( Ll)「,」Titlecase letter(Lt)「,」Modifier letter(Lm)「,」Other letter(Lo)「或」Letter number(Nl)「。
因此,你都不允許有變量$ _或它自己。很多JavaScript框架/庫/東西利用這個事實來縮短他們的調用。
所以在JQuery的(Javascript庫),美元符號是一個別名/參照JQuery的功能。
在這種情況下,第一行是相當於$(文件)。就緒(),它等待DOM運行之前完成裝載。
換句話說,你要在DOM完成加載(幾乎所有的功能真的)後運行要放在這裏面,因爲jstree功能()是。
代碼看起來像在JavaScript中Module Pattern的嘗試。好處是匿名函數有一個閉包,它有助於維護其中的變量隱私並維護其局部變量和函數的狀態。
實現該模式正確的方法是:
(function($) {
...
})(jQuery);
其中(...)()
是IIFE的例子(立即調用Function Expression)。該函數表達式被後()
,這其中是否包含jQuery
將通過jQuery
功能到匿名函數的範圍爲$
調用,因爲這是它作爲參數名。這種模式的好處是人們可以編寫jQuery插件,並可以維護自己的jQuery函數和變量副本,並隨時調用它們,這有助於解決名稱衝突。
目前接受的答案是不正確地解釋文檔,這只是說明如果你有一個函數聲明,你可以在文檔準備好時通過傳遞給jQuery函數來執行它作爲回調函數,相當於jQuery的$(document).ready(function(){...});
的可能重複[這是什麼(函數($){...})(jQuery的);做/是什麼意思?(http://stackoverflow.com/questions/2464635/what-does-function-jquery-do-mean) – JJJ