以防止连续两次启动事件,是否可以执行这样的操作?
$('.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);
}
});
虽然我双击它,但至少不会连续两次发射它,但使用上述代码,尽管超时,我再也无法按下它吗?显然我在做错事。
只需使用off()
$('.examplediv').off('click');
您可以尝试在元素中添加"运行"标志,以阻止事件。
$('.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);
}
});