私はJavaScriptの専門家ではありません(それから遠い)と私はちょうどjQueryと面白い経験があります。私は、次のコードを持っている:jQueryの.on()メソッドは、inmediatly関数を呼び出す
// show search forms
searchButton = jQuery('#show-search');
searchForm = jQuery('#search-form');
function toggleSearch() {
searchButton.button('toggle');
searchForm.slideToggle(300, function() {
searchForm.find('#value').focus();
});
}
searchButton.on('click', toggleSearch());
ページのロード、#search-form
が実際に起動しているが、それは(ボタンをクリックすなわち、実際に)関数を呼び出すことを必要とせず、滑り落ちます。
According to this post私はこのような関数を渡すことができます。
searchButton.on('click', toggleSearch);
そして、私はこれをやっていたかのように同じことをするでしょう。
searchButton.on('click', function() {
toggleSearch();
});
それはに動作します。両方の方法があります。
- なぜこれが機能し、なぜ最初のフォームを使用できないのですか? (合格
toggleSearch()
) - ランダムな値を持つ変数toggleFunctionがある場合はどうなりますか?それは関数の代わりに渡されませんか?
EDIT:私はthis excellent answerの承知しているが、それは「参照」の部分、また以前に割り当てられた変数の場合を説明していません。そのような場合には、無名の関数が必要ですか?私は毎回それらを使うべきですか?
あなたの質問に対する答えがあると思います。 – Pablo
@Pabloそれは働いている方法についてではありません。 – AeroCross