Skip to content

Jquery使用ajax过程中禁止点a标签

教程内容

在Jquery使用ajax更新数据的过程中,禁用a标签

具体操作

ajax判断的是整个类的标签被点击时:

js
$('.xxxxxx').click(function(){
....
}

尝试过的方法

  1. 增加一个效果一模一样的类,取名为xxxxx-live,在load function中移除xxxxx增加xxxxx-live,这样保持CSS效果的同时,不会触发xxxxx的点击事件。

结果:失败,仍然触发了,没有再去研究。

  1. 利用$('#xx').removeAttr('onclick')移除click事件,就不会触发了。

结果:不好,如果超时之类的出现了错误,移除后无法再添加(没研究如何添加)。

  1. 添加disabled属性,$('#xx').attr('disabled',"true");

结果:失败,只对button有效,对a标签无效。

  1. 禁用鼠标一段时间,不准点击网页。

结果:不好,体验很难受。

  1. 采用一个遮挡蒙板,当点击后就遮挡住按钮,防止过程中点击。

结果:没尝试,要写很多东西,比较懒不想写……

最终采用的方法

添加全局标志变量flag,当加载时flag设置为false禁止进入ajax,success或者error时设置为true,其实就是一把锁。

js
var flag = true;
$(function(){
    $('.xxxxxxxxx').click(function(){
        if(flag) {
            flag = false;
            event.stopPropagation();//防止冒泡
            ……
            $.ajax({
                ……
            })

            function LoadFunction() {
                ……
            }

            function erryFunction(XMLHttpRequest, textStatus, errorThrown) {
                ……
                flag=true;
            }

            function succFunction(tt) {
               ……
                flag=true;
            }
        }
    });
})
转载请注明出处https://bananaoven.com/articles/138.html | 香蕉微波炉
分享许可方式知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
重大发现:转载注明原文网址的同学刚买了彩票就中奖,刚写完代码就跑通,刚转身就遇到了真爱。