jQuery禁用链接

任何人都知道如何禁用jQuery中的链接,而不使用return false;

具体来说,我想要做的是禁用一个项目的链接,使用jquery触发一些东西,然后重新启用该链接点击它,如果再次点击它作为默认。

谢谢。 戴夫

更新这是代码。 .expanded类应用之后需要做的是重新启用禁用的链接。

 $('ul li').click(function(e) { e.preventDefault(); $('ul').addClass('expanded'); $('ul.expanded').fadeIn(300); //return false; }); 
 $('#myLink').click(function(e) { e.preventDefault(); //do other stuff when a click happens }); 

这将阻止超链接的默认行为,即访问指定的href。

从jQuery 教程 :

对于点击和大多数其他事件,您可以通过在事件处理程序中调用event.preventDefault()来防止默认行为 – 在这里,跟在jquery.com的链接之后

如果只有在满足某些条件(例如隐藏某些条件preventDefault()时才想要preventDefault() ,则可以使用展开的类来testingul的可见性。 如果它是可见的(即不隐藏),链接应该正常触发,因为if语句不会被input,因此默认行为将不会被阻止:

 $('ul li').click(function(e) { if($('ul.expanded').is(':hidden')) { e.preventDefault(); $('ul').addClass('expanded'); $('ul.expanded').fadeIn(300); } }); 

尝试这个:

 $("a").removeAttr('href'); 

编辑-

从您更新的代码:

  var location= $('#link1').attr("href"); $("#link1").removeAttr('href'); $('ul').addClass('expanded'); $('ul.expanded').fadeIn(300); $("#link1").attr("href", location); 

对于像我这样通过谷歌来到这里的其他人来说,另一种方法是:

 css: .disabled { color: grey; // ...whatever } jQuery: $('#myLink').click(function (e) { e.preventDefault(); if ($(this).hasClass('disabled')) return false; // Do something else in here if required else window.location.href = $(this).attr('href'); }); // Elsewhere in your code if (disabledCondition == true) $('#myLink').addClass('disabled') else $('#myLink').removeClass('disabled') 

记住:不仅这是一个CSS类

类= “的ButtonStyle”

也是这两个

class =“buttonstyle disabled”

所以你可以很容易地添加和删除更多的类与jQuery。 无需触摸href …

我爱jQuery! 😉

这是一个替代的CSS / jQuery解决scheme,我更喜欢它的简洁和最小化脚本:

CSS:

 a.disabled { opacity: 0.5; pointer-events: none; cursor: default; } 

jQuery的:

 $('.disableAfterClick').click(function (e) { $(this).addClass('disabled'); }); 

您可以通过以下方式删除点击链接;

 $('#link-id').unbind('click'); 

您可以通过以下方式重新启用链接,

 $('#link-id').bind('click'); 

你不能使用“禁用”属性的链接。

如果你去href路线,你可以保存它

禁用:

 $('a').each(function(){ $(this).data("href", $(this).attr("href")).removeAttr("href"); }); 

然后重新启用使用:

 $('a').each(function(){ $(this).attr("href", $(this).data("href")); }); 

在一个案例中,我必须这样做,因为点击事件已经绑定在其他地方,我无法控制它。

我总是用jQuery来禁用链接

 $("form a").attr("disabled","disabled"); 

我最喜欢的“结账编辑项目,并防止”狂野西部点击到任何地方,而在结帐“function

 $('a').click(function(e) { var = $(this).attr('disabled'); if (var === 'disabled') { e.preventDefault(); } }); 

所以,如果我想要在第二个操作工具栏中的所有外部链接应该被禁用,而在上面描述的“编辑模式”,我会添加编辑function

 $('#actionToolbar .external').attr('disabled', true); 

火灾后的链接示例:

 <a href="http://goo.gl" target="elsewhere" class="external" disabled="disabled">Google</a> 

现在你可以使用禁用的财产的链接

干杯!

你应该find你在这里回答。

感谢@Will和@Matt为这个优雅的解决scheme。

 jQuery('#path .to .your a').each(function(){ var $t = jQuery(this); $t.after($t.text()); $t.remove(); }); 

只要触发东西,设置一些标志,返回false。 如果设置了标志 – 什么都不做。

你可以隐藏和显示链接,只要你喜欢

 $(link).hide(); $(link).show(); 

我知道这不是与jQuery,但你可以禁用一些简单的CSS链接:

 a[disabled] { z-index: -1; } 

HTML看起来像

 <a disabled="disabled" href="/start">Take Survey</a>