我写过一个函数,如:
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未定义"。我该如何通过这个" e" ??
答案 0 :(得分:2)
您正确指向处理程序,您只需要传递参数。
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