将执行从js文件中的一个单击事件传递到另一个js文件中的另一个函数

时间:2013-03-02 10:04:54

标签: javascript jquery

我有一个点击事件A,当触发时,它将检查用户是否已登录。如果用户未登录,将触发模态登录窗口并且用户登录。当用户点击登录时按钮,执行登录并将执行传递回单击事件A并继续执行。

$('.A').on('click',function(){
   //Check if logged in
   if(!logged_in())
   {
      var r = confirm("you are not logged in. Do you want to login/register"?);
      if(r)
           $('#login_link').click();
      else return
   }   

   //Continue execution if logged in
   //Execution of code
});

我的#login_link是登录的模态窗口。当用户点击模态窗口上的登录按钮时的jquery

$('#sign_in').click(function(){
 //perform log in function
 if(success)
     window.location.assign(window.location.href);
});

当用户成功登录时,它将保留在其所在的页面上。但是现在登录后,我希望执行返回到A上的click事件。这两个事件在不同的js文件中,但页面引用了它们。有人可以帮我吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

事件是异步的。您无法返回返回,因为代码将继续立即运行。您需要做的是为事件创建函数。函数login.Alogin.sign_in也可以只是对象外的函数。这只是为了表明一种可能性。像:

var login = {
    A : function(){
        //Check if logged in
       if(!logged_in())
       {
          var r = confirm("you are not logged in. Do you want to login/register"?);
          if(r)
               login.sign_in();
          else return
       }   

       //Continue execution if logged in
       //Execution of code
    },
    sign_in : function(){
        //perform log in function
        if(success)
             window.location.assign(window.location.href);

        return "back to A, or end the click event of #sign_in";

    }
};

$(".A").click(login.A);
$("#sign_in").click(login.sign_in);