Как передать событие нажатия кнопки в функцию обратного вызова - PullRequest
0 голосов
/ 08 ноября 2018

Скрипка: http://jsfiddle.net/cmw0s2rk/

function HandleTopNavClick($elem, pretext = "", replace = false, e) {
  debugger;
  e.preventDefault();
  var href = $elem.href;
}

$("ul.check-it li a").on("click", HandleTopNavClick($(this), "clickhere_", true, event));

Есть идеи, почему event не переносится на функцию?

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

Вы, вероятно, хотели использовать HandleTopNavClick в качестве функции обратного вызова, но вместо этого вы используете возвращаемое значение функции в качестве функции обратного вызова, которое не определено.

Вы можете просто использовать HandleTopNavClick в качестве функции обратного вызова для обработчика событий щелчка и использовать this для ссылки на элемент.

function HandleTopNavClick(e) {
  debugger;
  e.preventDefault();
  var href = $(this).attr('href');
}

$("ul.check-it li a").on("click", HandleTopNavClick);

JSFiddle Demo: http://jsfiddle.net/cmw0s2rk/8/

0 голосов
/ 08 ноября 2018

Как и у Николаса, этого можно добиться с помощью функций стрелок, которые иногда могут показаться немного лучше.

$("ul.check-it li a").on("click", event => HandleTopNavClick($(this), "clickhere_", true, event));
0 голосов
/ 08 ноября 2018

Вы синхронно вызываете handleTopNavClick, а затем передаете его результат в .on. Вместо этого вы хотите создать функцию и передать ее в .on, который позже будет вызываться с событием.

$("ul.check-it li a").on("click", function(event) {
  HandleTopNavClick($(this), "clickhere_", true, event)
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...