我有一个div女巫和一个jquery列表器:
$("#right_arrow").click(function(){
//my action
});
我的行动也在计算步数,如果用户进入最后一步,它就不会让它走得更远。当用户点击div时,一切都很好。但是当用户非常快地点击两次时(在prevoios到最后一步),他就通过了最后一步。
我尝试过这样的事情:
if($(this).data('off')==1) return;
$(this).data('off', 1);
//my action
$(this).data('off',0);
但仍有同样的问题。似乎我在函数内部编写的任何内容都很重要 - 就像在第一次执行函数之前,两次单击排队一样。
如何避免这种情况?
谢谢!
答案 0 :(得分:5)
每次点击尝试分离和重新附加事件处理程序可能成本更高,您可以使用布尔标记来指示是否可以安全点击。
var isClicked = false;
$("#right_arrow").click(function(){
if (!isClicked) {
isClicked = true;
//my action
// reenable in 200ms
setTimeout(function () {
isClicked = false;
}, 200);
}
});
答案 1 :(得分:0)
使用鼠标输出事件将其设置为:
$("#right_arrow").click(function(){
if($(this).attr('data-off')==1) return;
$(this).attr('data-off', 1);
//my action
$(this).mouseout(function(){
$(this).attr('data-off',0);
});
});