ajax / jquery - 防止用户多次单击

时间:2013-04-02 02:21:48

标签: jquery ajax

我有一个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);

但仍有同样的问题。似乎我在函数内部编写的任何内容都很重要 - 就像在第一次执行函数之前,两次单击排队一样。

如何避免这种情况?

谢谢!

2 个答案:

答案 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);
        });

     });