如何使锚链接无法点击或禁用?

时间:2011-10-04 22:47:19

标签: jquery

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

<a href='' id='ThisLink'>some text</a>

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

有任何线索吗?

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

18 个答案:

答案 0 :(得分:185)

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

.disableClick{
    pointer-events: none;
}

答案 1 :(得分:32)

<a href='javascript:void(0);'>some text</a>

答案 2 :(得分:26)

选择的答案不好。

使用指针事件 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;
}

答案 3 :(得分:10)

$('a').removeAttr('href')

$('a').click(function(){ return false})

取决于情况

答案 4 :(得分:10)

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

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;
});

答案 5 :(得分:9)

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

但是.disabled类仅在'a'标记已经具有类'btn'时才有效。它不适用于任何旧的'a'标签。 btn类在某些上下文中可能不合适,因为它具有样式内涵。在幕后,.disabled类将pointer-events设置为none,因此您可以让CSS执行与Saroj Aryal和Vitrilo相同的操作。 (谢谢Les Nightingill的建议)。

答案 6 :(得分:9)

添加css课程:

.disable_a_href{
    pointer-events: none;
}

添加此jquery

$("#ThisLink").addClass("disable_a_href"); 

答案 7 :(得分:5)

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

答案 8 :(得分:5)

最好的方法是阻止默认操作。对于锚标记,默认行为是重定向到href指定的地址。

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

$('#ThisLink').click(function(e)
{
    e.preventDefault();
});

答案 9 :(得分:4)

写一行jQuery代码

$('.hyperlink').css('pointer-events','none');

如果你想写css文件

.hyperlink{
    pointer-events: none;
}

答案 10 :(得分:3)

在样式表中创建以下类:

  .ThisLink{
           pointer-events: none;
           cursor: default;
    }

将此类添加到您的动态链接,如下所示。

 <a href='' id='elemID'>some text</a>

    //   or using jquery
<script>
    $('#elemID').addClass('ThisLink');
 </script>

答案 11 :(得分:3)

杰森麦克唐纳评论为我工作,在Chrome,Mozila和IE中测试过。

添加灰色以显示禁用效果。

.disable_a_href{
    pointer-events: none;
    **color:#c0c0c0 !important;**
}

Jquery只选择了锚列表中的第一个元素,添加了元字符(*)来选择和禁用标识为#ThisLink的所有元素。

$("#ThisLink*").addClass("disable_a_href"); 

答案 12 :(得分:3)

您可以使用onclick事件来禁用点击操作:

<a href='' id='ThisLink' onclick='return false'>some text</a>

或者您可以使用<a>标记以外的其他内容。

答案 13 :(得分:1)

试试这个:

$('a').contents().unwrap();

答案 14 :(得分:1)

简单地在SASS:

{{1}}

答案 15 :(得分:1)

这是我用来禁用的方法。希望它有所帮助。

$("#ThisLink").attr("href","javascript:;");

答案 16 :(得分:-1)

$('#ThisLink').one('click',function(){
  $(this).bind('click',function(){
    return false;
  });
});

这将是另一种方法,只需点击一下即可添加带有return false的处理程序(将禁用该链接)。

答案 17 :(得分:-4)

最简单的方式

在你的HTML中:

<a id="foo" disabled="true">xxxxx<a>

在你的js中:

$('#foo').attr("disabled", false);

如果你使用它作为属性完美地运作