jQuery リンクの無効化

誰か、return false;を使わずにjqueryでリンクを無効にする方法を知っていますか?

具体的には、あるアイテムのリンクを無効にして、jqueryを使ってそのアイテムをクリックし、いくつかのトリガーを実行した後、そのリンクを再び有効にして、再びクリックされたときにデフォルト通りに動作するようにしたいと考えています。

ありがとうございます。 デイブ

**アップデイト これがそのコードです。.expanded`クラスが適用された後に必要なのは、無効化されたリンクを再び有効にすることです。

$('ul li').click(function(e) {
    e.preventDefault();
    $('ul').addClass('expanded');
    $('ul.expanded').fadeIn(300);
    //return false;
});
ソリューション
$('#myLink').click(function(e) {
    e.preventDefault();
    //do other stuff when a click happens
});

これにより、ハイパーリンクのデフォルトの動作である、指定されたhrefにアクセスすることができなくなります。

jQuery tutorialより。

jQueryのチュートリアル1より: > クリックやその他のほとんどのイベントでは デフォルトの動作を防ぐことができます。 jquery.comへのリンクをクリックしてください。 イベントハンドラ内で event.preventDefault() を呼び出すことで、 > デフォルトの動作を防ぐことができます。

特定の条件が満たされた場合(例えば、何かが隠されている場合)にのみpreventDefault()`を行いたい場合は、expandedクラスでulの可視性をテストすることができます。それが可視であれば(つまり、隠されていなければ)、if文が入力されないので、リンクは通常通り発火するはずで、したがって、デフォルトの動作は防止されません。

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

1http://docs.jquery.com/Tutorials:How_jQuery_Works

解説 (4)

試してみてください。

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

EDIT-

あなたの更新したコードから

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

ただ、何かをトリガーして、フラグを設定し、Falseを返します。フラグが設定されている場合は何もしません。

解説 (1)