1. イベントターゲット
これで、イベントハンドラー内の変数eventがイベントオブジェクトを保持します。 event.target 属性には、イベントが発生したターゲット要素が格納されます。この属性は DOM API で指定されていますが、すべてのブラウザーで実装されているわけではありません。 jQuery は、このプロパティをどのブラウザでも使用できるように、このイベント オブジェクトに必要な拡張を作成します。 .target を使用すると、最初にイベントを受信した DOM 内の要素 (つまり、実際にクリックされた要素) を特定できます。さらに、これがイベントを処理する DOM 要素を参照していることがわかっているので、次のコードを記述できます:
2. イベントの伝播を停止します
イベント オブジェクトは、イベントのバブリングを完全に防ぐことができる .stopPropagation() メソッドも提供します。 .target と同様、このメソッドは純粋な JavaScript 機能ですが、クロスブラウザー環境では安全に使用できません。ただし、すべてのイベント ハンドラーを jQuery 経由で登録している限り、このメソッドを安全に使用できます。
次に、先ほど追加した check ステートメントevent.target == を削除し、ボタンのクリック ハンドラーにコードを追加します。
前と同様に、イベント オブジェクトにアクセスするには、クリック ハンドラーとして使用される関数にパラメーターを追加する必要があります。その後、event.stopPropagation() を呼び出すだけで、他のすべての DOM 要素がこのイベントに応答するのを防ぐことができます。このようにして、ボタンのクリック イベントはボタンによって処理され、ボタンのみが処理されます。スタイル コンバーターの他の場所をクリックすると、領域全体が折りたたまれて展開されます。
3. デフォルトの動作
クリック イベント ハンドラーを外側の
補足:
// ボタンの外側の div をクリックしてイベントをトリガーします (隠しボタン)
$(document).ready(function() {
$('#switcher').click(function() {
$('#switcher .button').toggleClass('hidden');
});
});
これは、目的を達成するためにボタンの動作を変更することによっても行うことができます。
JS によるイベントのバブリングを防ぐ
イベントバブリング: マウスによるボタンのクリックなど、要素上でイベントがトリガーされると、その要素のすべての祖先要素で同じイベントがトリガーされます。このプロセスはイベント バブリングと呼ばれます。イベントは元の要素から DOM ツリーの最上位までバブルアップします。
JS を使用すると、JS イベントのバブリングを防ぐことができます。ブラウザの違いにより、IEとFFではJSの記述方法が若干異なります。
IE はこれを防ぐために cancelBubble=true を使用しますが、FF は stopPropagation メソッドを使用する必要があります。
次の完全なコード:
点击aaaa会触发上层的onclick事件,点击bbbb不会触发上层onclick事件
aaaa | bbbbb |