为防止连续两次触发事件,是否可以执行此类操作?
$('.examplediv').one('click', function() {
//doing a bunch of stuff
//somehow rebind the .one('click') <------
});
我想在//做一些事情之后重置.one('click'),以便可以再次触发整个事件。
-edit -
我尝试过RocketHazmats解决方案,
$('.examplediv').on('click', function() {
if(!$(this).data('click_running')){
$(this).data('click_running', true);
//doing a bunch of stuff
$(this).data('click_running', false);
}
});
但是,如果我快速双击它,那么//做一堆东西仍然不止一次。
如果我在超时时这样做,那么它应该是这样吗?
$('.examplediv').on('click', function() {
if(!$(this).data('click_running')){
$(this).data('click_running', true);
//doing a bunch of stuff
setTimeout(function() {
$(this).data('click_running', false);
}, 2500);
}
});
虽然如果我双击它至少连续两次没有它,但是上面的代码我不能再次按下它,尽管超时?显然我做错了。
答案 0 :(得分:0)
只需使用off()
即可$('.examplediv').off('click');
答案 1 :(得分:0)
您可以尝试向元素添加“running”标志,以阻止该事件已经运行。
$('.examplediv').on('click', function() {
if(!$(this).data('click_running')){
$(this).data('click_running', true);
//do some stuff
//make the .examplediv accept another click event?
$(this).data('click_running', false);
}
});