禁用使用jQuery的超链接
<a href="gohere.aspx" class="my-link">Click me</a>
我做了
$('.my-link').attr('disabled', true);
但它没有工作
有没有简单的方法来禁用使用jQuery的超链接? 删除href? 我宁愿不捣鼓href。 所以,如果我可以做到这一点,而无需删除href,那就太好了。
您可以绑定一个返回false的点击处理程序:
$('.my-link').click(function () {return false;});
要重新启用它,请解除绑定处理程序:
$('.my-link').unbind('click');
请注意, disabled
不起作用,因为它仅用于表单input。
jQuery已经预料到了这一点,提供了一个jQuery 1.4.3的捷径:
$('.my-link').bind('click', false);
并解除/重新启用:
$('.my-link').unbind('click', false);
我知道这是一个古老的问题,但似乎还没有解决。 遵循我的解决scheme…
只需添加这个全局处理程序
$('a').click(function() { return ($(this).attr('disabled')) ? false : true; });
这是一个快速演示: http : //jsbin.com/akihik/3
你甚至可以添加一些CSS来给所有带有disabled属性的链接赋予不同的风格。
例如
a[disabled] { color: grey; }
无论如何,似乎禁用的属性是无效a
标签。 如果您喜欢遵循w3c规范,则可以轻松采用符合html5的data-disabled
属性。 在这种情况下,您必须修改以前的代码片段并使用$(this).data('disabled')
。
除去href
属性绝对好像还有一段路要走。 如果由于某种原因,你以后需要它,我会把它存储在另一个属性,例如
$(".my-link").each(function() { $(this).attr("data-oldhref", $(this).attr("href")); $(this).removeAttr("href"); });
这是唯一的办法做到这一点,将使链接显示禁用以及编写自定义的CSS。 只要将点击处理程序绑定到false,就会使链接显示为正常链接,但点击它时不会发生任何事情,这可能会让用户感到困惑。 如果你要去点击处理程序的路线,我至less也会.addClass("link-disabled")
并写一些CSS,使该类的链接看起来像普通文本。
$('.my-link').click(function(e) { e.preventDefault(); });
你可以使用:
$('.my-link').click(function(e) { return false; });
但我不喜欢自己使用它,因为它更加神秘,即使它在很多jQuery代码中被广泛使用。
pointer-events
CSS属性在支持( caniuse.com )方面有点不足,但是非常简洁:
.my-link { pointer-events: none; }
function EnableHyperLink(id) { $('#' + id).attr('onclick', 'Pagination("' + id + '")');//onclick event which u $('#' + id).addClass('enable-link'); $('#' + id).removeClass('disable-link'); } function DisableHyperLink(id) { $('#' + id).addClass('disable-link'); $('#' + id).removeClass('enable-link'); $('#' + id).removeAttr('onclick'); } .disable-link { text-decoration: none !important; color: black !important; cursor: default; } .enable-link { text-decoration: underline !important; color: #075798 !important; cursor: pointer !important; }
我相信所有的HTML元素的disabled
属性都是无效的,请参阅MSDN文章 。 这和残疾人的适当价值是简单的“残疾人”。 你最好的办法是绑定一个返回false的点击函数。
附加一个包含pointer-events的类:non
.active a{ //css text-decoration: underline; background-color: #fff; pointer-events: none;} $(this).addClass('active');
下面将用它的文本replace链接
$('a').each(function () { $(this).replaceWith($(this).text()); });
编辑:
以上给出的代码将只与文本超链接,它不会与图像。 当我们尝试使用图片链接时,它不会显示任何图片。
为了使这个代码兼容图像链接下面将正常工作
// below given function will replace links with images ie for image links $('a img').each(function () { var image = this.src; var img = $('<img>', { src: image }); $(this).parent().replaceWith(img); }); // This piece of code will replace links with its text ie for text links $('a').each(function () { $(this).replaceWith($(this).text()); });
解释:在上面给出的代码片断,在第一个片段中,我们只用它的图像replace所有的图像链接。 之后,我们用文本replace文本链接。
这也很好。 简单,精简,不需要使用jQuery。
<a href="javascript:void(0)">Link</a>
尝试:
$(this).prop( "disabled", true );