js的onclick和jquery的bind事件执行前后顺序

近期在项目中为每个ajax触发按钮写正在加载的效果,用的是bootstarpjquery

代码以下ajax

$(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);*/
            });
    });

在每个按钮的点击事件中,判断该按钮是否存在spa

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

若是有的话就开始监听ajax的start事件和complete事件,并显示正在登录,完成后重置按钮的状态code

可是后来发现只有登陆按钮能够正常,其余的按钮都不能显示正在执行的效果blog

惟一的区别就是,登陆按钮的时间是写在jquery的bind中,而其余的按钮为了方便都是直接写了onclick 事件,网上说onclick事件先于bind事件执行,这样就能解释通了。事件

jquery在onclick事件中已经执行了ajax,而后才增长ajax的绑定监听,因此监听是无效的。get

相关文章
相关标签/搜索