js前端限制只提交一次,做了限制,快速点击还是不生效,是不是因为 click 300ms 延迟问题,我的2次触发未超过300ms

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』插件!!

阅读 5.6k
10 个回答

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

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

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

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

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

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

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

新手上路,请多包涵

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题