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>