如何使锚点链接不可点击或禁用?

Evi*_*mes 82 jquery

我有一个锚点链接,我想在用户点击它时禁用它.或者,从文本周围删除锚标记,但绝对保留文本.

<a href='' id='ThisLink'>some text</a>
Run Code Online (Sandbox Code Playgroud)

通过添加.attr("disabled", "disabled");
我成功添加了禁用属性,我可以通过按钮轻松完成此操作,但链接仍然可以点击.
我真的不在乎文本是否加下划线.

任何线索?

当你点击错误的音乐家时,它应该只是添加"错误"然后变得无法点击.
当您单击并且您是正确的时,它应该添加"Awesome"然后禁用所有<a>标签.

mvi*_*kam 189

最干净的方法是在要禁用单击时添加一个带指针事件的类:none.它的功能类似于普通标签.

.disableClick{
    pointer-events: none;
}
Run Code Online (Sandbox Code Playgroud)

  • 使用这个想法更简单的方法是使用[disabled]作为css的选择器,这样你就不需要将.disableClick类添加到锚点 (19认同)
  • 但要小心,因为您仍然可以使用指针事件选项卡禁用事件:无 (13认同)
  • 适用于IE,但仅适用于版本11及更高版本:http://caniuse.com/pointer-events (2认同)
  • 使用 `pointer-events:none` 也会禁用 `cursor`、标题文本和其他鼠标悬停事件。 (2认同)
  • 将此与“tabindex =”-1“”配对似乎可以满足除 JavaScript 中生成的单击事件之外的所有用例。 (2认同)

Shi*_*Sah 32

<a href='javascript:void(0);'>some text</a>
Run Code Online (Sandbox Code Playgroud)

  • 请解释您的解决方案,以便将来访问此问题的访问者将了解它如何解决手头的问题. (7认同)
  • 来自:[MDN:The void Operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void).当浏览器跟随`javascript:URI`时,它会评估URI中的代码,然后用返回的值替换页面的内容,除非返回的值是'undefined`.`void`运算符可用于返回`undefined`.例如:`<a href="javascript:void(0);">``点击这里什么都不做`````但是,请注意,`javascript:`伪协议不鼓励其他选择,例如不显眼的事件处理程序. (3认同)

vit*_*ilo 27

选择答案不好.

使用指针事件 CSS样式.(正如Jason MacDonald建议的那样)

请参阅MDN https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events.大多数浏览器都支持它.

如果你有如下全局CSS规则,那么简单地将"disabled"属性添加到锚点就可以完成这项工作:

a[disabled], a[disabled]:hover {
   pointer-events: none;
   color: #e1e1e1;
}
Run Code Online (Sandbox Code Playgroud)

  • +1用于通过[禁用]属性而不是类添加样式.应该注意指针事件:无; 但是在IE11之前的版本中不起作用. (3认同)
  • +1.所以我下次不必再查一下了:所需的javascript(使用jQuery)将是`$("#elementid").attr("disabled","disabled");`.在CSS中包含`cursor:default`也是有帮助的(正如Muhammad Nasir所建议的那样). (3认同)

MSI*_*MSI 11

我刚刚意识到你的要求(我希望).这是一个丑陋的解决方案

var preventClick = false;

$('#ThisLink').click(function(e) {
    $(this)
       .css('cursor', 'default')
       .css('text-decoration', 'none')

    if (!preventClick) {
        $(this).html($(this).html() + ' lalala');
    }

    preventClick = true;

    return false;
});
Run Code Online (Sandbox Code Playgroud)

  • 不同意,使用CSS"pointer-events:none;" 相反,就像在其他unswers中一样. (2认同)

Ash*_*hot 10

$('a').removeAttr('href')
Run Code Online (Sandbox Code Playgroud)

要么

$('a').click(function(){ return false})
Run Code Online (Sandbox Code Playgroud)

这取决于情况


小智 9

添加一个css类:

.disable_a_href{
    pointer-events: none;
}
Run Code Online (Sandbox Code Playgroud)

添加这个jquery:

$("#ThisLink").addClass("disable_a_href"); 
Run Code Online (Sandbox Code Playgroud)


Yev*_*yev 9

Bootstrap为我们提供了.disabled课程.请使用它.

但是.disabled只有当'a'标签已经具有类'btn'时,类才有效.它不适用于任何旧的'a'标签.该btn班可能无法在某些情况下是合适的,因为它有风格的内涵.在幕后,将.disabled类设置pointer-eventsnone,这样就可以使CSS做同样的事情,Saroj阿亚尔和Vitrilo已经sugested.(谢谢你,Les Nightingill的建议).

  • .disabled类仅在'a'标记已经具有类'btn'时才有效.它不适用于任何旧的'a'标签.'btn'类在某些上下文中可能不合适,因为它具有样式内涵.在封面下,.disabled类将指针事件设置为无,因此您可以使css与Saroj Aryal和Vitrilo进行过相同的操作. (3认同)

Exp*_*lls 5

只需href从锚标记中删除该属性即可.

  • 在某些浏览器中,删除href只需将href设置为/或当前页面. (2认同)

Ked*_*kar 5

最好的方法是阻止默认操作.在锚标记的情况下,默认行为是重定向到href指定的地址.

因此,遵循javascript在这种情况下效果最佳:

$('#ThisLink').click(function(e)
{
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)


Sha*_*ool 5

编写一行 jQuery 代码

$('.hyperlink').css('pointer-events','none');
Run Code Online (Sandbox Code Playgroud)

如果你想写在css文件中

.hyperlink{
    pointer-events: none;
}
Run Code Online (Sandbox Code Playgroud)