Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将按钮单击事件传递给回调函数_Javascript_Jquery_Event Handling - Fatal编程技术网

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

Javascript 如何将按钮单击事件传递给回调函数,javascript,jquery,event-handling,Javascript,Jquery,Event Handling,小提琴: 知道为什么事件没有传递到函数中吗?您正在同步调用handleTopNavClick,然后将其结果传递到.on。相反,您希望创建一个函数并将其传递到.on,该函数稍后将随事件一起回调 $("ul.check-it li a").on("click", function(event) { HandleTopNavClick($(this), "clickhere_", true, event) }); 您可能打算使用HandleTopNavClick作为回调函数,但是您使用的是函数的

小提琴:


知道为什么
事件
没有传递到函数中吗?

您正在同步调用handleTopNavClick,然后将其结果传递到.on。相反,您希望创建一个函数并将其传递到.on,该函数稍后将随事件一起回调

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

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

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

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

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

JSFIDLE Demo:

与Nicholas类似,这可以通过箭头函数实现,箭头函数有时读起来会更好一些

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

您只需要添加对
HandleTopNavClick
的引用作为回调,而不是调用它的结果。不幸的是,将其更改为箭头函数也会更改
$(此)
导致的结果,从而破坏代码。jquery使用
调用回调,该
等于创建事件侦听器的dom节点,但这只适用于普通函数。
$("ul.check-it li a").on("click", event => HandleTopNavClick($(this), "clickhere_", true, event));