一、教程内容
在Jquery使用ajax更新数据的过程中,禁用a标签
二、具体操作
ajax判断的是整个类的标签被点击时:$('.xxxxxx').click(function(){
....
}
首先记录我尝试过的东西:
1、增加一个效果一模一样的类,取名为xxxxx-live,在load function中移除xxxxx增加xxxxx-live,这样保持CSS效果的同时,不会触发xxxxx的点击事件。
结果:失败,仍然触发了,没有再去研究。
2、利用$('#xx').removeAttr('onclick')移除click事件,就不会触发了。
结果:不好,如果超时之类的出现了错误,移除后无法再添加(没研究如何添加)。
3、添加disabled属性,$('#xx').attr('disabled',"true");
结果:失败,只对button有效,对a标签无效。
4、禁用鼠标一段时间,不准点击网页。
结果:不好,体验很难受。
5、采用一个遮挡蒙板,当点击后就遮挡住按钮,防止过程中点击。
结果:没尝试,要写很多东西,比较懒不想写……
最终采用的方法:
添加全局标志变量flag,当加载时flag设置为false禁止进入ajax,success或者error时设置为true,其实就是一把锁。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;
}
}
});
})