有人知道如何在jquery中禁用一个链接而不使用return false吗?

具体来说,我要做的是禁用一个项目的链接,使用jquery执行点击它触发一些东西,然后重新启用该链接,以便如果它再次单击它作为默认工作。

谢谢。 戴夫

更新 这是代码。在应用.expanded类之后,它需要做的是重新启用被禁用的链接。

$('ul li').click(function(e) {
    e.preventDefault();
    $('ul').addClass('expanded');
    $('ul.expanded').fadeIn(300);
    //return false;
});

当前回答

HTML链接示例:

        <!-- boostrap button + fontawesome icon -->
        <a class="btn btn-primary" id="BT_Download" target="_blank" href="DownloadDoc?Id=32">
        <i class="icon-file-text icon-large"></i>
        Download Document
        </a>

在jQuery中使用

    $('#BT_Download').attr('disabled',true);

添加到CSS:

    a[disabled="disabled"] {
        pointer-events: none;
    }

其他回答

你应该在这里找到答案。

感谢@威尔和@马特的优雅解决方案。

jQuery('#path .to .your a').each(function(){
    var $t = jQuery(this);
    $t.after($t.text());
    $t.remove();
});
$('#myLink').click(function(e) {
    e.preventDefault();
    //do other stuff when a click happens
});

这将防止超链接的默认行为,即访问指定的href。

jQuery教程:

对于点击和大多数其他事件,您 可以防止默认行为- 点击链接,进入jquery。com -通过在事件处理程序中调用event. preventdefault ()

如果只希望在满足某个条件(例如隐藏了某些东西)时才使用preventDefault(),则可以使用扩展的类测试ul的可见性。如果它是可见的(即不隐藏),链接应该正常触发,因为If语句不会被输入,因此默认行为将不会被阻止:

$('ul li').click(function(e) {
    if($('ul.expanded').is(':hidden')) {
        e.preventDefault();
        $('ul').addClass('expanded');
        $('ul.expanded').fadeIn(300);
    } 
});

只需使用$("a")。支持(“禁用”,真的);。 这将真正禁用de link元素。 需要为prop("disabled", true)。不要使用attr("disabled", true)

我知道这不是用jQuery,但你可以用一些简单的css禁用一个链接:

a[disabled] {
  z-index: -1;
}

HTML看起来是这样的

<a disabled="disabled" href="/start">Take Survey</a>

只需设置preventDefault并返回false

   $('#your-identifier').click(function(e) {
        e.preventDefault();
        return false;
    });

这将是禁用链接,但仍然,你会看到一个可点击的图标(手)图标。你也可以删除下面

$('#your-identifier').css('cursor', 'auto');