1

我有一个 div 女巫和一个 jquery 侦听器:

$("#right_arrow").click(function(){
  //my action
});

我的动作也是计算步数,如果用户到达最后一步,它不会让它走得更远。当用户通常单击 div 时,一切都很好。但是,当用户非常快速地单击两次(在最后一步之前)时,他会通过最后一步。

我尝试过这样的事情:

if($(this).data('off')==1) return;
$(this).data('off', 1);
//my action
$(this).data('off',0);

但仍然有同样的问题。似乎我在函数中编写的任何内容都无关紧要 - 就像在第一次使用函数之前两次点击排队一样。

怎么能避免呢?

谢谢!

4

2 回答 2

5

每次单击尝试分离和重新附加事件处理程序的成本可能更高,您可以使用布尔标志来指示单击是否安全。

var isClicked = false;

$("#right_arrow").click(function(){
  if (!isClicked) {
    isClicked = true;

    //my action

    // reenable in 200ms
    setTimeout(function () {
      isClicked = false;
    }, 200);
  }
});
于 2013-04-02T02:25:04.387 回答
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);
        });

     });
于 2013-04-02T02:38:00.943 回答