2013-03-02 2 views
2

트리거 된 경우 사용자가 로그인했는지 확인하는 클릭 이벤트 A가 있습니다. 사용자가 로그인하지 않은 경우 모달 로그인 창이 트리거되고 사용자가 로그인합니다. 사용자가 로그인 버튼을 클릭하면 로그인이 수행되고 실행은 다시 클릭 이벤트 A로 전달되어 실행을 계속합니다.js 파일의 한 번의 클릭 이벤트에서 다른 js 파일의 다른 함수로 실행 전달

$('.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 파일에 있지만 페이지는이 두 이벤트를 모두 참조합니다. 누구든지이 일을 도와 줄 수 있습니까? 미리 감사드립니다!

답변

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); 
관련 문제