双击被阻止,但阻止默认值不起作用

Double click prevented but prevent default does not work

本文关键字:默认值 不起作用 双击      更新时间:2023-10-01

我使用的是这篇文章中的代码,双击阻止有效,但按钮仍然没有响应preventDefault

有人能伸出援手吗?

js:

var myBtn = $('.myLink');
var handler = function(e){
    e.preventDefault();
    console.log("prevent 2x click");
    $(this).unbind('click');
    setTimeout(function(){ myBtn.click(handler); }, 500);
}
myBtn.click(handler);

html:
<a class='myLink' href="#">my link to click</a>

原因是,当您解除绑定处理程序(具有preventDefault)时,在短时间内再点击一次并不能阻止默认行为。因此,您可以附加一个专用的处理程序来防止默认,并取消绑定只执行其他逻辑的处理程序。试试这个方法:

var myBtn = $('.myLink');
var handler = function(e){
    $(this).unbind('click', handler); //unbind only your handler
    setTimeout(function(){
            myBtn.click(handler); }
    , 500);
}
myBtn.click(preventDefault); //have this bound to the anchor to prevent the default behavior always
myBtn.click(handler);
function preventDefault(e){
   e.preventDefault();
}

演示