Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们能通过吗;";在javascript/jquery中从一个函数到另一个函数?_Javascript_Jquery - Fatal编程技术网

我们能通过吗;";在javascript/jquery中从一个函数到另一个函数?

我们能通过吗;";在javascript/jquery中从一个函数到另一个函数?,javascript,jquery,Javascript,Jquery,我编写了一个函数,如: 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 u

我编写了一个函数,如:

 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”

如果正确地指向了处理程序,只需传递参数即可

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]);
  • 参数
    转换为正确的数组
  • 使用
    apply
    将它们传递给处理程序
    onLogin

为什么要为
clickMe
onLogin
创建单独的功能?为什么不把
onLogin
放在
onClickFunction
数据结构中呢?只是为了看得清楚,构建不复杂的代码。我的onLogin代码本身大约是50LOC。这就是为什么…但是,我想问你为什么要创建第二个函数,而第一个函数可以正常工作。为什么要创建第二个函数名?做相同事情的两个函数比在两个地方使用相同的函数名更复杂。要访问uuid,我需要移动到其他页面js,这是一种方法。或者我可以在这个页面本身中访问uuid。所以我编写了函数clickMe,它调用onLogin()…对不起,但我不理解最后一条评论中的任何内容。这个函数是否存在浏览器兼容性问题??我需要在旧版本的浏览器上运行我的代码。它是香草JS,所以可能不是。不过,你必须测试它。我的意思是它与其他浏览器不兼容。如果您误解了,很抱歉。@ajayv很高兴知道。。)