Присоединение вызова функции к методу вызова вложения события немедленно

0

У меня есть динамический элемент HTML, и я хочу привязать функцию к обработчику событий.

drilldownTextInput = $("<input type='text' class='drilldown-search' data-drilldown-options='" + drilldownOptions + "' />");
drilldownTextInput.on('click', showOptions());

function showOptions() {
    console.log("Working.");
}

Проблема в том, что при загрузке showOptions() функция showOptions() вызывается сразу, а не на событии клика.

Если я это сделаю, событие будет работать так, как ожидалось, - только по щелчку.

drilldownTextInput = $("<input type='text' class='drilldown-search' data-drilldown-options='" + drilldownOptions + "' />");
drilldownTextInput.on('click', function() {
    console.log("Only appears on click...");
});

В чем разница между ними и как я могу вызвать функцию, чтобы держать вещи СУХОЙ?

  • 0
    Если у вас есть foo(bar()) , то сначала вызывается bar , а ее возвращаемое значение передается в foo . Все аргументы оцениваются первыми.
Теги:
function
click
events

2 ответа

1

Попробуйте следующее:

drilldownTextInput.on('click', showOptions);

вместо:

drilldownTextInput.on('click', showOptions());

Справка

1

() вызывает функцию, вы должны просто передать функцию без ее выполнения, иначе возвращаемое значение функции будет установлено как обработчик.

drilldownTextInput.on('click', showOptions);
  • 0
    Да, честно говоря, я этого никогда не знал. Спасибо за вашу помощь, это имеет смысл, как только вы это скажете. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню