防止双击一个链接,但可以点击另一个链接

Preventing double click on a link but can click on another link

本文关键字:链接 但可以 另一个 一个 双击      更新时间:2023-09-26

我有一系列表格格式的链接,所有链接都用不同的id连接。我需要防止他们的双击,以防止相关的服务器代码的双重执行。然而,用户可以点击不同的链接。我这样说是因为我遇到了以下解决方案:

$("a.button").one("click", function() {
    $(this).click(function () { return false; });
});

,我相信停止点击整个页面,一旦一个链接被点击,这是太强大了。我喜欢上面的类绑定方法,但是用户应该能够点击任何链接。

赞赏的想法。谢谢。

编辑目前尝试:

<a class="dblclick" href="....

<script type="text/javascript">
    $("a.dblclick").dblclick(function (e) { return false; });
</script> 

但是似乎不起作用。

这将在第一次点击链接时为其添加一个类。第二次,当类存在时,链接将不起作用。

$("a.button").on("click", function(event) {
    event.preventDefault();
    if $(this).hasClass('clicked')) { 
        return false;
    } else {
        $(this).addClass('clicked').trigger('click');
    }
});

就用原来的one吧。

为了澄清$("a.button").one(...)将在每个元素中精确地注册一次,这似乎是您想要的。

之后,我们只需要在服务器完成处理时再次设置clickhandler。

//bootstrap
$("a.button").one("click", clickhandlerOnce);
function clickhandlerOnce(event) {
    var $that = $(this),
        url = "http://www.example.com"; 
    $.getJSON(url, function(result){
        //TODO: handle your result here. 
        //NOTE: take care of errors. 
        //since we're done now with the server processing, 
        //we may bind the handler again if needed. 
        $that.one("click", clickhandlerOnce);
    });
};

对你想要做的事情有点困惑。

是否可以删除处理该事件的函数上的click事件?可以使用

从单个控件中删除事件
$( "#foo").unbind( "click" );

这样就可以捕获初始单击,然后删除处理程序。

$( "#foo" ).click(function(ev) {
  ev.preventDefault();
  $( "#foo").unbind( "click" );
});

preventDeafault()调用阻止表单提交,以防你在表单中这样做。

尝试使用双击(http://api.jquery.com/dblclick/)

当您双击链接时,将触发单击事件,然后是双击事件。您可以取消双击事件。

$("a.button").dblclick(function(e) { return false; });

尝试在元素中设置标志

$("a.button").on("click", function() {
    ev.preventDefault();
    if($(this).attr('data-clicked')){
        $(this).attr('data-clicked', true)
        return true
    }
    return false
});