禁用链接以停止在JQuery中双击

clo*_*ead 36 javascript jquery

button单击一次后如何禁用该类的所有链接?我希望能够在一个地方做到这一点,而不必单独改变所有这些......任何想法?

到目前为止我得到了这个:

$("a.button").click(function() { $(this).attr("disabled", "disabled"); });
$("a[disabled]").click(function() { return false; });
Run Code Online (Sandbox Code Playgroud)

但第二个事件没有解雇..

aak*_*och 69

这是我会尝试的:

$("a.button").one("click", function() {
    $(this).click(function () { return false; });
});
Run Code Online (Sandbox Code Playgroud)

用类"按钮"绑定所有链接.仅运行一次匿名函数(因此为"one"),重新绑定链接以返回false.

如果你想让它看起来更像你拥有的东西,试试这个:

$("a.button").click(function() { $(this).attr("disabled", "disabled"); });
$(document).click(function(evt) {
     if ($(evt.target).is("a[disabled]"))
          return false;
});
Run Code Online (Sandbox Code Playgroud)

  • 大!我想添加[one()](http://api.jquery.com/one/)文档. (5认同)

Ste*_*oka 25

如果您使用链接,我有一个优雅的解决方案:

function do_nothing() { 
  return false;
}

// prevent a second click for 10 seconds. :)
$('.prevent_doubleclick').live('click', function(e) { 
  $(e.target).click(do_nothing); 
  setTimeout(function(){
    $(e.target).unbind('click', do_nothing);
  }, 10000); 
});
Run Code Online (Sandbox Code Playgroud)

https://github.com/ssoroka/prevent_doubleclick.js

我很快就会加入对表单的支持.


Seb*_*Seb 13

是的,设置一个值来跟踪这个:

$("a").click(function (){
  if( $(this).data("clicked") ){
    return false;
  }
  $(this).data("clicked", true);
  return true;
});
Run Code Online (Sandbox Code Playgroud)


Pau*_*aul 5

创建一个JS - 将它包含在每个页面上(如果你有一个页面,则包含在你的主页中.)

我觉得有点像

$(document).ready(function(){
  $('.button').click(function(){
    $('.button').click(function(e) {
      e.preventDefault();
    });
  });
});
Run Code Online (Sandbox Code Playgroud)