1

jQuery でイベントを比較clickして、同じクリックから発生したかどうかを確認しています。現在、イベントを使用して、timeStampイベントが同じクリックから発生したかどうかをテストしています。これはほぼ確実に機能しますが、より良い方法があるかどうか疑問に思っています.

たとえば、bodyheaderの両方にクリック イベントがあり、 をクリックするとheader、 にバブリングしbodyます。発生する両方のイベントが同じクリックから発生したかどうかをテストする最良の方法は何ですか?

4

1 に答える 1

1

プレーンな JavaScript では、同じイベント オブジェクトが両方のイベント リスナーに到達するため、それらを比較できます。一方、jQuery は元のイベント オブジェクトをリスナーごとに新しい正規化されたオブジェクトにラップするため、代わりにそれらのプロパティを確認する必要が.originalEventあります。

いずれにせよ、それを確認する必要はありませんでした。通常、クリックした要素がクリックをバインドした要素と同じかどうかを知りたいだけです。

document.body.addEventListener('click', function(e) {
    if(e.target === this) {
        // the click happened on the body itself
    } else {
        // the click bubbled up
    }
}, false);

jQuery はイベント委譲のための優れたメカニズムを提供するため、次のようなものも必要ありませんif

$('body').on('click', '.someSelector', function(e) {
    // This will only fire if an element with class 'someSelector'
    // was clicked
});
于 2013-09-10T00:16:43.750 に答える