首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >addEventListener回调函数只执行一次吗?

addEventListener回调函数只执行一次吗?
EN

Stack Overflow用户
提问于 2016-02-10 04:05:01
回答 3查看 7.1K关注 0票数 1

对于addEventListener的回调,我注意到了functionfunction()之间的区别。在我尝试传递一个参数之前,这不是一个问题。基本上,

代码语言:javascript
运行
复制
element.addEventListener("hover", logInput, false );
function logInput(){
    console.log('registered!');
}

按预期工作,但添加括号将使其立即进行日志记录,而不会持续响应事件触发器:

代码语言:javascript
运行
复制
element.addEventListener("hover", logInput(), false );
function logInput(){
    console.log('registered!');
}

为什么会这样呢?以及如何在传递参数时使其工作,例如:

代码语言:javascript
运行
复制
element.addEventListener("hover", logOnInput(this), false );
function logOnInput(triggeredElement){
    console.log(triggeredElement);
}
EN

Stack Overflow用户

发布于 2016-02-10 04:14:23

它是一个javascript,当您想调用一个使用括号的函数时。没有括号外的函数是无用的。但是在作为参数的函数内部,您使用没有括号的函数,以便当该事件发生时,只有它才会运行。如果使用函数参数内的括号调用函数,它将立即执行,并且在事件发生时也会运行。要调用函数中的参数并在此情况下调用函数,需要使用如下所示的绑定方法:

代码语言:javascript
运行
复制
element.addEventListener("hover", logOnInput.bind(null, argument1, argument2, etc), false );

但是,如果您想选择上下文作为this,那么我建议您这样使用:

代码语言:javascript
运行
复制
function logOnInput(elem,arguments) {
  //now you can use **elem** to refer **this**
}

并对悬停事件使用匿名函数,如下所示:

代码语言:javascript
运行
复制
element.addEventListener("hover", function(){
   logOnInput(this,arguments)
}, false );
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35306597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档