0

手元に例はありませんが、状況によっては、元のイベントを呼び出すとevent.preventDefault()元のイベントが通過します(ページへの移動、フォームの送信など)が、falseを返すと役立ちます。何が原因でしょうか?

4

2 に答える 2

2

手に入れる例がありませんか?さて、あなたが考えていたものであるかもしれないし、そうでないかもしれないものを発明させてください。

これは、との両方をreturn false;呼び出すのと同じことを覚えておいてください。編集:これはjQueryに適用されます。これは、この動作を明示的に実装し、正規化してすべてのブラウザーで使用できるようにします。「プレーン」JSを備えたすべてのブラウザでそのように機能するわけではありません。実際、古いバージョンのIEはまったくサポートしておらず、独自の同等のものがあります。event.preventDefault();event.stopPropagation()event.preventDefault()event.stopPropagation()event.preventDefault()event.returnValue = false;

ネストされた要素があり、同じイベントを複数のレベルで処理する場合、呼び出しevent.preventDefault()は外部要素のイベントハンドラーの実行を停止しませんがreturn false、イベントの伝播を停止するためです。

それを示す例:http://jsfiddle.net/nnnnnn/KjLv3/

<a href="#"><span>Click me to see an alert</span></a>

// using jQuery for simplicity in the example:

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

$("a").click(function() {
    alert("Hello");
});

アラートが表示されます。「スパン」ハンドラーを変更してfalseを返す場合、アラートは表示されません。

于 2012-08-09T07:18:01.337 に答える
1

event.preventDefault()は、ブラウザがイベントのそれ以上の伝播を停止せずにデフォルトのアクションを実行するのを防ぎます(イベントがキャンセル可能な場合)。一方、 falseを返すと、イベントがDOMを伝播(または「バブリング」)するのを防ぎ、デフォルトのアクション。

それで、

function() {
  return false;
}

//同等です

function(e) {
  e.preventDefault();
  e.stopPropagation();
}
于 2012-08-09T07:19:27.290 に答える