使用下面的代码片段我试图在我的元素上绑定两个事件,单击并悬停,然后我将eventName变量传递给module.execute()函数。但在这两种情况下,我传递eventName的变量等于"单击"。我理解闭包,我可以看到为什么eventName总是"点击"。什么是确保eventName引用" hover"当调用悬停回调并且"点击"当调用click回调时。
function foo() {
var events = ["hover", "click"];
for (var j = 0; j < events.length ; j++){
var eventName = events[j];
if(eventName === "hover"){
$("#element").hover(function(){
//when this runs eventName is always click
module.execute(eventName);
});
}
else{
$("#element").click(function(){
module.execute(eventName);
});
}
}
}