Javascript范围解决方法

时间:2014-07-01 06:23:46

标签: javascript

使用下面的代码片段我试图在我的元素上绑定两个事件,单击并悬停,然后我将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);
        });
      }
    }

}

0 个答案:

没有答案