30

リンクでページが開かないようにしたい。だから私はこれを書いた:

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

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

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

確かに、いくつかのテストで最初のイベントにアクションを追加できますが、href イベントのみが実行されないようにするエレガントな方法はありますか?

編集

実際、それはうまくいきます、ごめんなさい。ここで働く@raina77owフィドルを参照してください:http://jsfiddle.net/HeFS6/

4

3 に答える 3

32

return false代わりに使用してください。以下のコードがここで機能しているのを見ることができます。

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

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

この記事で@raina77owが指摘しているように、を使用することは、を呼び出すことと同じです。過去にいくつかのコードがないと問題が発生したので、私は常にそれを提案します。return falseevent.preventDefault()event.stopPropagation()return false

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

于 2012-09-06T11:44:04.123 に答える
1

の代わりにe.preventDefault()、試しましたreturn falseか?これにより、ブラウザのデフォルトの動作も防止されます。

于 2012-09-06T11:44:01.567 に答える
0

href イベントはありません。クリック時のデフォルトを防止すると、これが最終的な結果になります。より具体的なセレクターを使用する必要があります。

于 2012-09-06T11:41:34.363 に答える