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

use*_*273 1 ajax jquery

我有一个div女巫和一个jquery列表器:

$("#right_arrow").click(function(){
  //my action
});
Run Code Online (Sandbox Code Playgroud)

我的行动也在计算步骤,如果用户进入最后一步,它就不会让它走得更远.当用户点击div时,一切都很好.但是当用户非常快地点击两次时(在prevoios到最后一步),他就通过了最后一步.

我尝试过这样的事情:

if($(this).data('off')==1) return;
$(this).data('off', 1);
//my action
$(this).data('off',0);
Run Code Online (Sandbox Code Playgroud)

但仍然有同样的问题.似乎我在函数内部写的东西都很重要 - 比如在第一次执行函数之前,两次单击就会排队.

怎么可以避免?

谢谢!

Dan*_*mms 5

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

var isClicked = false;

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

    //my action

    // reenable in 200ms
    setTimeout(function () {
      isClicked = false;
    }, 200);
  }
});
Run Code Online (Sandbox Code Playgroud)