Javascript 完成某项操作后是否重置.one(';单击';)?
为了防止连续两次触发事件,可以这样做吗Javascript 完成某项操作后是否重置.one(';单击';)?,javascript,jquery,click,timeout,reset,Javascript,Jquery,Click,Timeout,Reset,为了防止连续两次触发事件,可以这样做吗 $('.examplediv').one('click', function() { //doing a bunch of stuff //somehow rebind the .one('click') <------ }); 但是,如果我真的很快地双击//做一大堆事情,它仍然会触发不止一次 如果我超时,它应该是这样的吗 $('.examplediv').on('click', function() { if(!$(thi
$('.examplediv').one('click', function() {
//doing a bunch of stuff
//somehow rebind the .one('click') <------
});
但是,如果我真的很快地双击//做一大堆事情,它仍然会触发不止一次
如果我超时,它应该是这样的吗
$('.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);
}
});
如果我双击它,它至少不会连续触发两次,但根据上面的代码,即使超时,我也不能再按它了?显然我做错了什么事。只要使用
您可以尝试向元素添加一个“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);
}
});
e、 preventDefault或.stop()您想对所有元素只触发一次click事件。examplediv元素还是您的问题@A.Wolff:我想他想在元素上运行click事件时阻止它。你问是否可以重新绑定新的/相同的(“click”)事件?是的,我想重新绑定相同的一个。click事件。我尝试过这个方法,但问题是如果你快速双击,它仍然会触发两次事件。大多数用户不会双击,但我仍然不希望这成为可能。使用one.click不可能双击,但以后也不可能再次单击,这就是为什么我想重新绑定one.click(如果可能)。
$('.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);
}
});