对于addEventListener的回调,我注意到了function
和function()
之间的区别。在我尝试传递一个参数之前,这不是一个问题。基本上,
element.addEventListener("hover", logInput, false );
function logInput(){
console.log('registered!');
}
按预期工作,但添加括号将使其立即进行日志记录,而不会持续响应事件触发器:
element.addEventListener("hover", logInput(), false );
function logInput(){
console.log('registered!');
}
为什么会这样呢?以及如何在传递参数时使其工作,例如:
element.addEventListener("hover", logOnInput(this), false );
function logOnInput(triggeredElement){
console.log(triggeredElement);
}
发布于 2016-02-10 04:14:23
它是一个javascript,当您想调用一个使用括号的函数时。没有括号外的函数是无用的。但是在作为参数的函数内部,您使用没有括号的函数,以便当该事件发生时,只有它才会运行。如果使用函数参数内的括号调用函数,它将立即执行,并且在事件发生时也会运行。要调用函数中的参数并在此情况下调用函数,需要使用如下所示的绑定方法:
element.addEventListener("hover", logOnInput.bind(null, argument1, argument2, etc), false );
但是,如果您想选择上下文作为this
,那么我建议您这样使用:
function logOnInput(elem,arguments) {
//now you can use **elem** to refer **this**
}
并对悬停事件使用匿名函数,如下所示:
element.addEventListener("hover", function(){
logOnInput(this,arguments)
}, false );
https://stackoverflow.com/questions/35306597
复制相似问题