如何将按钮单击事件传递给回调函数

时间:2018-11-08 16:54:31

标签: javascript jquery event-handling

提琴: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 :(得分:4)

您正在同步调用handleTopNavClick,然后将其结果传递到.on。相反,您想要创建一个函数并将其传递给.on,稍后将在事件中对其进行回调。

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

答案 1 :(得分:2)

您可能打算使用HandleTopNavClick作为回调函数,但是,您将函数的返回值用作未定义的回调函数。

您可以仅将HandleTopNavClick用作click事件处理程序的回调函数,并使用this来引用该元素。

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

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

JSFiddle演示:http://jsfiddle.net/cmw0s2rk/8/

答案 2 :(得分:1)

类似于尼古拉斯,这可以通过箭头功能实现,有时可以读得更好。

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