Я не эксперт по 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 Речь идет не о методах работы, а о _why_ они работают. – AeroCross