web-dev-qa-db-ja.com

hrefがリンクを開かないようにしますが、それでも他のバインドイベントを実行します

リンクがページを開くのを防ぎたい。だから私はこれを書いた:

$("a").click(function(e) {
    e.preventDefault()
}

素晴らしいです!しかし、これは私の他のイベントをブロックします:

$(".toolbar a").click(function(e) {
    ...action...
}

何らかのテストで最初のイベントにアクションを追加できますが、onlyhrefイベントの実行を防ぐエレガントな方法はありますか?

[〜#〜] edit [〜#〜]

実際、動作します、すみません。ここで動作する@ raina77owフィドルを参照してください: http://jsfiddle.net/HeFS6/

27
Benoit R

代わりに_return false_を使用してください。以下のコードが機能することを確認できます here

_​$("a").click(function() {
    return false;
});

$(".toolbar a").click(function() {
    alert("Do something");
});​
_

@ raina77owが指すように この記事 で、_return false_を使用することはevent.preventDefault()を呼び出すことと同じです。 event.stopPropagation()も。過去にいくつかのコードで_return false_なしで問題が発生したため、常に推奨します。

ただし、ここで最も重要なことは、バインド順序です。最後のバインドが最初に実行されるコードになります。だから、気をつけて行ってください。

30

e.preventDefault()の代わりに、return false?これにより、ブラウザのデフォルトの動作も妨げられます。

1
Matt C

Hrefイベントはありません。これが、クリック時のデフォルトを防ぐ場合の結果です。より具体的なセレクタを使用する必要があります。

0
Hazem Salama