2017-02-27 4 views
0

AjaxでJqueryを使用しています。 クリック、アンバインド、アヤックスバインドをクリックした後でクリックします。 ですが、Bindメソッドは機能しません。 助けてください、私Ajaxの後にバインドイベントが発生しない

$(".lang").on("click", function (e) { 

    $(this).unbind('click'); 

    if ($(this).hasClass("disabledLanguage")) { 

     return false; 
    } 
    var token = $('[name=__RequestVerificationToken]').val(); 

    $.ajax({ 
     type: "POST", 
     url: Host + "Language", 
     data: { __RequestVerificationToken: token, Code: $(this).data("code") }, 
     success: function (data) { 

      if (data.IsCompleted) { 

       //window.location = window.location.href; 
      } 
      else { 
       //alert("Error"); 
      } 

      $(this).unbind('click'); //<----Notworking 
     } 
    }); 
     return false; 

    }); 
+1

'this'で詳しく可能性があり、AJAX成功コールバックで、あなたはそれだと思うものではありません - ' VAR _this = this'をajax呼び出しの前に呼び出し、成功コールバックで '$(_ this).unbind'を実行すると、' this'はどのように動作するのですか? –

答えて

1
/** 
* make a function to handle the click event stand alone 
* it's good for reuse and test 
*/ 
function clickHandler(e){ 
    /** 
    * cache the result of $(this) 
    * for performance and reuse in another function context 
    */ 
    var $lang = $(this); 

    $lang.unbind('click', clickHandler); 

    if ($lang.hasClass("disabledLanguage")) { 
     return false; 
    } 

    var token = $('[name=__RequestVerificationToken]').val(); 

    $.ajax({ 
     type: "POST", 
     url: Host + "Language", 
     data: { __RequestVerificationToken: token, Code: $lang.data("code") }, 
     success: function(data) { 

      if (data.IsCompleted) { 

       //window.location = window.location.href; 
      } else { 
       //alert("Error"); 
      } 

      /** 
      * doing after click,unbind and after ajax bind click 
      * so it should be bind click but not unbind click 
      */ 
      $lang.bind('click', clickHandler); 
     } 
    }); 
    return false; 
} 

$(".lang").on("click", clickHandler); 

が、これはあなたを助けることができること、およびコメント

+0

この素晴らしい、非常に非常に感謝しますshuizhongyuemin :) –

関連する問題