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

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

谢谢。 戴夫

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

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

当前回答

只要触发东西,设置标志,返回false。如果设置了flag -什么都不做。

其他回答

试试这个:

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

编辑-

从您更新的代码:

 var location= $('#link1').attr("href");
 $("#link1").removeAttr('href');
 $('ul').addClass('expanded');
 $('ul.expanded').fadeIn(300);
 $("#link1").attr("href", location);

如果您使用href路径,则可以保存它

禁用:

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

然后重新启用使用:

$('a').each(function(){
    $(this).attr("href", $(this).data("href"));
});

在一种情况下,我不得不这样做,因为点击事件已经绑定到其他地方,我无法控制它。

只需设置preventDefault并返回false

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

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

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

只要触发东西,设置标志,返回false。如果设置了flag -什么都不做。

你可以隐藏和显示你喜欢的链接

$(link).hide();
$(link).show();