使用jQuery禁用超链接
但它不起作用使用jQuery禁用超链接,jquery,disable-link,Jquery,Disable Link,但它不起作用 有没有一种简单的方法可以使用jquery禁用超链接?删除href?我宁愿不摆弄你。因此,如果我可以在不删除href的情况下执行此操作,那就太好了。您可以绑定一个返回false的单击处理程序: $('.my-link').attr('disabled', true); 要重新启用它,请取消绑定处理程序: $('.my-link').click(function () {return false;}); 请注意,disabled不起作用,因为它仅用于表单输入 jQuery已经预见
有没有一种简单的方法可以使用jquery禁用超链接?删除href?我宁愿不摆弄你。因此,如果我可以在不删除href的情况下执行此操作,那就太好了。您可以绑定一个返回false的单击处理程序:
$('.my-link').attr('disabled', true);
要重新启用它,请取消绑定处理程序:
$('.my-link').click(function () {return false;});
请注意,disabled
不起作用,因为它仅用于表单输入
jQuery已经预见到了这一点,从jQuery 1.4.3开始提供了一个快捷方式:
$('.my-link').unbind('click');
以及解除绑定/重新启用:
$('.my-link').bind('click', false);
删除
href
属性显然是一条可行之路。如果出于某种原因您以后需要它,我会将它存储在另一个属性中,例如
$('.my-link').unbind('click', false);
这是唯一一种不用编写自定义CSS也能使链接看起来被禁用的方法。仅将单击处理程序绑定为false将使链接看起来像普通链接,但单击它时不会发生任何事情,这可能会让用户感到困惑。如果您要使用单击处理程序路径,我至少也会.addClass(“链接禁用”)
并编写一些CSS,使与该类的链接看起来像普通文本
$(".my-link").each(function() {
$(this).attr("data-oldhref", $(this).attr("href"));
$(this).removeAttr("href");
});
您可以使用:
$('.my-link').click(function(e) { e.preventDefault(); });
但是我自己不喜欢使用它,因为它更神秘,尽管它在许多jQuery代码中被广泛使用。禁用的
属性在我相信的所有HTML元素上都无效,请参阅。这一点和正确的禁用值只是“禁用”。最好的方法是绑定一个返回false的click函数。我知道这是一个老问题,但似乎仍然没有解决。遵循我的解决方案
只需添加此全局处理程序:
$('.my-link').click(function(e) { return false; });
下面是一个快速演示:
您甚至可以添加一点css,为所有具有禁用属性的链接提供不同的样式
e、 g
无论如何,禁用属性似乎对a
标记无效。如果您喜欢遵循w3c规范,您可以轻松采用html5兼容的数据禁用属性。在这种情况下,您必须修改前面的代码段并使用$(this)。下面的数据('disabled')
将用文本替换链接
a[disabled]
{
color: grey;
}
编辑:
上面给出的代码只适用于文本超链接,而不适用于图像。当我们尝试使用图像链接时,它不会显示任何图像
要使此代码与图像链接兼容,以下操作将很好
$('a').each(function () {
$(this).replaceWith($(this).text());
});
//以下给定函数将用图像替换链接,即图像链接
$('a img')。每个(函数(){
var image=this.src;
变量img=$('
说明:在上述给定的代码段中,在第一个代码段中,我们仅用其图像替换所有图像链接。之后,我们用其文本替换文本链接。在支持()时,有点缺少指针事件
CSS属性,但它非常简洁:
// below given function will replace links with images i.e. 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 i.e. for text links
$('a').each(function () {
$(this).replaceWith($(this).text());
});
这也可以很好地工作。它非常简单、精简,并且不需要使用jQuery
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;
}
试试:
附加一个包含指针事件的类:non
$(this).prop( "disabled", true );
对于1.4.3或更高版本,您可以使用$('.my link').bind('click',false);
。从jQuery 1.7开始,bind()
和unbind()
已替换为on()
和off()
。有关更多信息,请参阅。这篇文章提供了使用引导的最简单方法,希望有所帮助。这是我第一次看到有人参考MSDN,W3C链接?!@Zappa,W3C学校与W3C无关。W3C是www.w3.org非常感谢!你刚刚让我不用编辑2400块文本…或学习正则表达式(谁想这么做,对吗?)。如何将链接设置回其默认值?假设我使用$(this).replaceWith($(this).text())禁用了所有链接;但如何将其设置为启用的默认值?删除href
也会扰乱SEO排名。保留该属性并禁用它将使机器人意识到它是一个链接。我认为这实际上应该是:if($(this).attr('disabled'){e.stopImmediatePropagation();}另外,为了确保动态添加的锚也被禁用,完整代码应该是:$(“body”)。在(“单击”,“a”,函数(e){if($(this).attr('disabled'){e.stopImmediatePropagation();}});(5分钟后无法编辑注释)。我忘记添加:e.preventDefault();可能的重复项“禁用”在链接上不可用。可能在IE中工作,但在其他浏览器中不可用。但这也可以禁用链接所做的任何其他工作。例如,悬停将不起作用。
.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;
}
<a href="javascript:void(0)">Link</a>
$(this).prop( "disabled", true );
.active a{ //css
text-decoration: underline;
background-color: #fff;
pointer-events: none;}
$(this).addClass('active');