当前位置: 首页 > 知识库问答 >
问题:

如何禁用HTML链接

于鸿博
2023-03-14

我在中有一个链接按钮,我必须禁用该按钮。这在IE上有效,但在Firefox和Chrome上不起作用。结构是-Link在中。我不能在中添加任何容器(如div/span)

$(td).children().each(function () {
        $(this).attr('disabled', 'disabled');
  });


  $(td).children().attr('disabled', 'disabled');

  $(td).children().attr('disabled', true);

  $(td).children().attr('disabled', 'true');

共有1个答案

杜俊风
2023-03-14

您不能禁用链接(以可移植的方式)。您可以使用这些技术中的一种(每种技术都有自己的优点和缺点)。

当大多数浏览器都支持时,这应该是正确的方法(但请参见后面的内容):

a.disabled {
    pointer-events: none;
}

例如,Bootstrap 3.x就是这样做的。目前(2016)只有Chrome、FireFox和Opera(19+)支持它。Internet Explorer从11版开始支持此功能,但不支持链接,但它可以在外部元素中使用,如:

span.disable-links {
    pointer-events: none;
}
<span class="disable-links"><a href="#">...</a></span>
a[disabled] {
    pointer-events: none;
}
<a style="pointer-events: none; display: inline-block;" href="#">...</a>

请注意pointer-events只禁用...指针事件。链接仍然可以通过键盘导航,然后您还需要应用这里描述的其他技术之一。

结合上述CSS技术,您可以以非标准的方式使用tabindex来防止聚焦元素:

<a href="#" disabled tabindex="-1">...</a>

我从来没有检查过它与许多浏览器的兼容性,那么你可能想在使用它之前自己测试一下。它具有无需JavaScript即可工作的优势。不幸的是(但显然)tabindex不能从CSS中更改。

$("td > a").on("click", function(event){
    if ($(this).is("[disabled]")) {
        event.preventDefault();
    }
});
$("td > a").attr("disabled", "disabled");
$("td > a").removeAttr("disabled");

Zoltán Tamási在一篇评论中指出,“在某些情况下,单击事件已经绑定到某个”真实“函数(例如使用knockoutjs),在这种情况下,事件处理程序排序可能会造成一些麻烦。因此,我通过将返回假处理程序绑定到链接的TouchStartMousedownKeydown事件来实现禁用链接。它有一些缺点(它会阻止链接上启动触摸滚动)”但处理键盘事件也有防止键盘导航的好处。

请注意,如果href未被清除,用户可能会手动访问该页面。

清除href属性。使用此代码,您不添加事件处理程序,而是更改链接本身。使用此代码禁用链接:

$("td > a").each(function() {
    this.data("href", this.attr("href"))
        .attr("href", "javascript:void(0)")
        .attr("disabled", "disabled");
});

而这一个是为了让它们重新变得强大:

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

就我个人而言,我不喜欢这个解决方案非常(如果你不需要做更多的禁用链接),但它可能更兼容,因为各种方式来遵循一个链接。

添加/删除onclick函数,如果返回false,则不会遵循链接。要禁用链接:

$("td > a").attr("disabled", "disabled").on("click", function() {
    return false; 
});
$("td > a").removeAttr("disabled").off("click");
a[disabled] {
    color: gray;
}
a.disabled {
    color: gray;
}

如果您使用的是UI框架,您可能会看到禁用链接的样式不正确。例如,Bootstrap 3.x可以处理这种情况,并且按钮的样式正确,可以使用disabled属性和.disabled类。相反,如果您正在清除链接(或使用其他JavaScript技术之一),则还必须处理样式,因为没有href仍被绘制为已启用。

不要忘记还包括属性aria-disabled=“true”disabled属性/class。

 类似资料:
  • 问题内容: 我有一个必须禁用的链接按钮。这适用于IE,但不适用于Firefox和Chrome。结构是- 内的链接。我无法在中添加任何容器(例如div / span) 我尝试了以下所有方法,但无法在Firefox上运行(使用1.4.2 js): 注意-我无法取消注册锚标记的click功能,因为它是动态注册的。而且我必须在禁用模式下显示链接。 问题答案: 您不能(以便携式方式)禁用链接。您可以使用其中

  • 问题内容: 有什么方法可以使用CSS禁用链接吗? 我有一个叫的类,想禁用与此类的链接,以便在单击它们时不执行任何操作。 问题答案: 答案已经在问题的注释中。 如果您需要支持IE,则有一种解决方法。 警告:CSS中非SVG元素的使用是实验性的。该功能曾经是CSS3UI草案规范的一部分,但由于存在许多未解决的问题,因此已推迟到CSS4。

  • 问题内容: 我有一个标签,在某些情况下,我希望此标签被完全禁用。 注释中的代码(这是链接的生成方式) 问题答案: 当您不希望用户点击时重定向时,请尝试此操作

  • 我有一个使用vue创建的单页应用程序,导航链接都是使用标记完成的。导航中有几个项目我的老板想在导航中使用,但禁用了,这样人们就可以看到一些即将推出的功能。然而,我不知道如何完全禁用路由器链接! 不执行任何操作,不执行任何操作(我尝试将其发送到一个函数,看看这是否会阻止单击,但它只是调用函数并路由,尽管存在阻止),添加一个

  • 问题内容: 我了解到,您可以仅通过将HTML按钮附加到其标签来禁用(使其实际上不可点击),但不能将其作为属性,如下所示: 由于此设置不是属性,因此如何通过JavaScript动态添加此设置以禁用以前启用的按钮? 问题答案: 由于此设置不是属性 这是一个属性。 一些属性定义为布尔值,这意味着您可以指定它们的值,而忽略其他所有内容。即,您只包括粗体部分,而不是disabled =“ disabled

  • 问题内容: import urllib2 到目前为止,一切都很好。 但是我只希望纯文本HTML中的href链接。我怎么解决这个问题? 问题答案: 尝试使用Beautifulsoup: 如果您只想要以开头的链接,则应使用: 在带有BS4的Python 3中,它应该是: