js的onclick和jquery的bind事件執行先后順序


近期在項目中為每一個ajax觸發按鈕寫正在加載的效果,用的是bootstarp

代碼如下

$(function(){
        $('.btn').bind('click',function(e){
            var $btn = $(e.target)
            if ($btn.attr("data-loading-text")){
                $("#data-loading-control").ajaxStart(function(evt, request, settings){
                    $btn.button('loading');
                });
                $("#data-loading-control").ajaxComplete(function(evt, request, settings){
                    $(".btn").button('reset');
                });
            }
                /*setTimeout(function(){
                        $btn.button('reset');
                    },1500);*/
            });
    });

在每一個按鈕的點擊事件中,判斷該按鈕是否存在

data-loading-control屬性
例如
<button class="btn btn-primary" id="login-button" type="button" data-loading-text="正在登錄">登錄</button>

如果有的話就開始監聽ajax的start事件和complete事件,並顯示正在登陸,完成后重置按鈕的狀態

但是后來發現只有登錄按鈕可以正常,其他的按鈕都不能顯示正在執行的效果

唯一的區別就是,登錄按鈕的時間是寫在jquery的bind中,而其他的按鈕為了方便都是直接寫了onclick 事件,網上說onclick事件先於bind事件執行,這樣就能解釋通了。

jquery在onclick事件中已經執行了ajax,然后才增加ajax的綁定監聽,所以監聽是無效的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM