2

トリガーされたときにユーザーがログインしているかどうかを確認するクリックイベント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 のクリック イベントに戻す必要があります。これら 2 つのイベントは異なる js ファイルにありますが、ページは両方を参照しています。誰でもこれについて私を助けることができますか?事前に感謝します!

4

1 に答える 1

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);
于 2013-03-02T10:14:07.813 に答える