2013-10-02 143 views
0
<script> 
jQuery(function($) { 
    $('#container').jstree(); 
}); 
</script> 

$傳遞到匿名函數,這是什麼意思?

+0

的可能重複[這是什麼(函數($){...})(jQuery的);做/是什麼意思?(http://stackoverflow.com/questions/2464635/what-does-function-jquery-do-mean) – JJJ

回答

3

jQuery Documentation

美元符號($)實際上是jQuery函數的別名。根據文檔,如果您將回調作爲參數傳遞給此函數,則會在DOM準備就緒時執行。

+2

那即使我明白......你能添加一個簡單化的版本聽起來太技術請? – AaronHatton

0

$jQuery的別名。

所以,你也可以寫jQuery('#container').jstree();

+0

值得注意的是,'$'只是javascript中一個有效的變量名 - 像'a'或'b'--並非內在的魔法。這在我幾年前第一次學習時並不明顯。 –

+0

另外值得注意的是,問題是關於匿名函數,而不是其內容。 – JJJ

2

Documentation

jQuery(function($) { 
    // Your code using failsafe $ alias here... 
}); 

$(function() { 
    // Document is ready 
}); 

同時使用快捷方式$(文件)。就緒()和參數 寫使用$別名故障安全jQuery代碼,而不依賴於 全球別名。

1

它使「$」爲局部變量,從而優雅地避免與任何其他可能使用「$」符號的變量的衝突。

這些功能都做同樣的事情 - 執行一些代碼時,DOM已準備就緒。

「$」和「jQuery的」作爲一個參數被作爲快捷方式,以避免重複這樣的構建體共同創建了接受功能。接受一個接受$作爲第一個參數的函數是一個進一步的語法糖 - 現在,您可以方便地使用閉包,而無需自行完成。

-1

JQUERY DOC :

jQuery() — which can also be written as $() — searches through the DOM ... 

因此:

$("div.foo");等於jQuery("div.foo");

-1

簡而言之: $是指由JQuery設置來表示自身的全局變量。

在不那麼短: JavaScript變量命名約定允許你開始以「$」變量「_」或類別的任何有效的Unicode字符「大寫字母(陸)」,「小寫字母( Ll)「,」Titlecase letter(Lt)「,」Modifier letter(Lm)「,」Other letter(Lo)「或」Letter number(Nl)「。

因此,你都不允許有變量$ _或它自己。很多JavaScript框架/庫/東西利用這個事實來縮短他們的調用。

0

代碼看起來像在JavaScript中Module Pattern的嘗試。好處是匿名函數有一個閉包,它有助於維護其中的變量隱私並維護其局部變量和函數的狀態。

實現該模式正確的方法是:

(function($) { 
    ... 
})(jQuery); 

其中(...)()是IIFE的例子(立即調用Function Expression)。該函數表達式被後(),這其中是否包含jQuery將通過jQuery功能到匿名函數的範圍爲$調用,因爲這是它作爲參數名。這種模式的好處是人們可以編寫jQuery插件,並可以維護自己的jQuery函數和變量副本,並隨時調用它們,這有助於解決名稱衝突。

目前接受的答案是不正確地解釋文檔,這只是說明如果你有一個函數聲明,你可以在文檔準備好時通過傳遞給jQuery函數來執行它作爲回調函數,相當於jQuery的$(document).ready(function(){...});