我写了一个像这样的函数:

 var link = {
       login : "#log_In"
    };

    var onLogin = function(e){
       e.preventDefault();

      //login functionality
    }

    var clickMe = function(){
       onLogin();//error can not read property of undefined "e is undefined"
    }

   var onClickFunction = {
          login : clickMe
    };


现在,当我单击像:

$(SELECTORS.link[key]).click(onClickFunction[key]);


我尝试将e传递给clickMe函数,并将该e发送到onLogin()仍然得到“ e is undefined”。我应该如何通过这个“ e”?

最佳答案

您正确地指向处理程序,只需要中继参数即可。

var link = {
   login : "#log_In"
};
var onClickFunction = {
    login : clickMe
};

var onLogin = function(e){
   e.preventDefault();

  //login functionality
};

var clickMe = function(){
    // relay the arguments to the handler onLogin
   onLogin.apply(this, Array.prototype.slice.apply(arguments));
};


$(SELECTORS.link[key]).click(onClickFunction[key]);



arguments转换为适当的数组
使用apply将它们传递给处理程序onLogin

关于javascript - 可以在javascript/jquery中将“e”从一个函数传递给另一个函数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32152317/

10-13 08:50
查看更多