2013-06-03 86 views
0

我试图在点击后禁用CSS链接1秒。点击后禁用CSS链接1秒

我试过这个没有成功;

在标题:

<script type="text/javascript"> 
$(function() { 
    $("#link").click(function() { 
     $("#link").attr("disabled", "disabled"); 
     setTimeout(function() { 
      $("#link").removeAttr("disabled");  
     }, 2000); 
    }); 
}); 
</script> 

HTML:

<a href="#" class="link">the link text</a> 

CSS:

.link:diabled { 
some values here.. } 
+0

什么是与你的问题代码?或者你可以设置一个JSFiddle来演示吗? – Ian

+0

是'.link:diabled'正确吗? (diabled!=禁用) – jackJoe

+0

您应该定义“禁用”。你的意思是你甚至不能点击它,或者点击时它什么都不做? – crush

回答

3

这里有不少问题:

  1. 您正在使用#(ID选择),但你的HTML是使用类。
  2. <a>没有禁用的属性
  3. 如果那样,你可能会想使用.prop代替.attr
  4. 如果你改变代码使用类,$(".link").prop("disabled", true)会影响所有锚,所以你或许应该使用this
  5. 因为disabled对于<a>不存在,所以:disabled选择器似乎不适用于CSS。

一个工作的解决办法是这样的:

$(".link").click(function() { 
    var $this = $(this); 
    $this.addClass('disabled'); 
    setTimeout(function() { 
     $this.removeClass('disabled'); 
    }, 2000); 
}); 

$(document).on('click', '.disabled', function (e) { 
    e.preventDefault(); 
}); 

http://jsfiddle.net/ExplosionPIlls/PaYcc/

+0

+1比我的更好,并提供固定代码。我只是想写一个jsfiddle,但你已经做到了;-) – bwoebi

+0

双击出现问题,虽然我有一个解决方案下面 –

4

你有一个class="link",但$("#link")你解决id称为link

所以写$(".link")到处而不是$("#link")

顺便说一句:与.link:disabled你不会寻址的链接,因为这只适用于输入和按钮。如果您需要解决它,请使用.link[disabled="disabled"] { ... },或者更好地向其添加一个类,称为disabled_link,然后在CSS .disabled_link { ... }中执行。

+0

OP可以总是采取简单的方法,并执行'$(this)'。 :P虽然好... + 1 – War10ck

+0

@ War10ck至少在外部函数调用中,他需要明确地解决它。 – bwoebi

+0

正确。尽管他可以创建一个引用'var $ this = $(this)',并从那里引用它,而不是多次遍历DOM。 – War10ck

3

'link'类和你正在使用它作为ID。做$('.link')而不是$('#link')

0

我觉得这个方法效果更好。另外,您可以点击链接多次扰乱了setTimeout的这个解除绑定的事件,然后再附加的setTimeout的除权后的事件:双击链接

$(".link").click(linkBind); 
function linkBind(){ 
    var $this = $(this); 
     $this.addClass('disabled'); 
     $this.unbind('click'); 
     setTimeout(function() { 
      $this.removeClass('disabled'); 
      $this.bind('click', linkBind); 
     }, 2000); 
} 

$(document).on('click', '.disabled', function (e) { 
    e.preventDefault(); 
}); 

http://jsfiddle.net/PaYcc/1/