🦍

javaScriptイベントキャンセルをまとめてみた

2022/08/12に公開

※サンプルソースにはAngularを使いますが、ReactでもVueでも考え方は同じです。

event.preventDefault

eventのDefaultの動作をpreventする(妨げる)

<a href="/" (click)="onClick($event)">スラッシュ</a>
onClick($event: Event): void {
    $event.preventDefault();
}
  • 説明
    例では、アンカータグのデフォルトのイベント(aタグのherfで指定されたURLへ遷移する)を $event.preventDefault()でキャンセルしているので、クリックしても何も起こりません。

stopPropagation

イベントの伝搬を停止する

<div (click)="onClickdiv()">
  <button (click)="onClickbutton()">ボタンクリック</button>
</div>
  onClickdiv(): void {
    console.log('ディブクリック');
  }

  onClickbutton(): void {
    console.log('ボタンクリック');
  }

このような場合、コンソールに「ボタンクリック」とだけ表示したくても「ディブクリック」も表示されてしまいます。いかがそれを解消するための例になります。

<div (click)="onClickdiv()">
  <button (click)="onClickbutton()">ボタンクリック</button>
</div>
  onClickdiv(): void {
    console.log('ディブクリック');
  }

  onClickbutton($event: Event): void {
    console.log('ボタンクリック');
    $event.stopPropagation();
  }
  • 説明
    stopPropagationを実行した後は、親要素に同種のイベントが設定されていても実行されません。ちなみに「Propagation」は伝搬という意味です。

stopImmediatePropagation

追記予定

Discussion

ログインするとコメントできます