2
js前端,限制只触发提交一次。使用了:
$('#demo').click(function(){
    var _self = $(this);    

    // 已加载过,不再次请求
    if(_self.hasClass('clicked')){
        return false;
    }
    _self.addClass('clicked');

    // 执行其他逻辑
});

发现点击特别快的时候,并不能限制住!
问题:
    是不是 'click' 事件的 '300ms' 的延迟问题?,程序还没执行??

两次 'click' 事件的截图:

[图片]
clipboard.png

后记:

单独在html文件测试了下,是没有问题的,别误导了其他人!
原因可能是我代码了混用了其他插件,iscroll.js

clipboard.png

展示效果:

clipboard.png

多个状态滚动

大家要实现这个效果,可以记得 『iscroll』插件!!

2018-05-21 提问
10 个回答
6

已采纳

为何不用$('#demo').one()

1

应该是addClass,你可以换一个true/falseflag试试。如果你只是想触发一次,可以用one

0

或者用局域变量而不是class来标示状态

0

这也有可能你每次执行的dom元素不一样,也就是说你的_self可能每次点击时的值都不一样

0

提供一个绕过去的方案,用户点击之后 弄一个 加载层

0

我们的解决方案是增加蒙版层. 点击的时候弹出 正在加载的那个东东

0

可以了解下函数节流 和函数防抖!!!!

0

弄个 flag或者 $().one()都可以解决吧
不过有没有可能是你的js 加载了2次

0

用标志判断阻止,点击再怎么快也快不过js执行啊。。。

0

问题虽然解决了,不过我还是建议你使用一个flag:true/false来控制点击

撰写答案

你可能感兴趣的

推广链接