下面代码,点击一次向左,等完成后,再点击没问题,如果一直点,快速点,到头后还能跑过,这个怎么处理,是不是应该让点击执行完后才可再次点击,应该怎么写
有jsfiddle就很容易调了。
第一想法当然是“让mousedown事件在执行完毕之前不能重复触发”。但千万小心——这个显然的思路完全不对:因为jQuery的动画过程是异步的!无论动画多长,这个mousedown事件都会立刻执行完毕。控制这个事件的重复触发必然是错误的。
正确的方法是:让动画效果的播放过程中,不再触发mousedown事件。
我用了个简单的方法:
并不刻意反复的启用/禁止事件响应。
动画开始前,设定容器元素的一个标志。
使用.animate()的回调函数,控制动画结束后把标志去掉。
如果mousedown事件执行时看到了标志,则直接跳出,不做实际动作。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。