blog

ul以下の複数のliにリスニング・イベントをバインドする

リスナーイベントを各liに1つずつバインドする場合、liの数が多すぎると、多くのリスナーをバインドする必要があり、メモリリークにつながる可能性がありますし、コードも複雑になります。そこで、ulタグにリ...

Aug 20, 2020 · 2 min. read
シェア

リスナーイベントをliに1つ1つバインドしていくと、liの数が多い場合、たくさんのリスナーをバインドする必要があり、メモリリークを起こしたり、コードが複雑になったりします。そこで、ulタグにリスナーイベントをバインドし、liをクリックするとバブリングでulのクリックイベントが発生するようにすれば、実装も簡単です。

実現:

import React from 'react'; import { useEffect } from 'react';import './css/index.css';function App() { const list = [ { id: "10002", name: 'book1' }, { id: "10003", name: 'book2' }, { id: "10004", name: 'book3' } ] function liClickHandle(event) { event = event || window.event; var target = event.target || event.srcElement; console.log(target.id); switch (target.id) { case "10002": console.log(target) break; case "10003": console.log(target) break; case "10004": console.log(target) break; default: console.log("error") } } useEffect(() => { var ul = document.getElementById("ulid"); ul.addEventListener('click', liClickHandle, false); return () => { ul.removeEventListener('click', liClickHandle, false); }; }, []) return ( <div className="App"> <ul id="ulid"> { list.map((item, index) => { return (<li id={item.id} key={item.id}>{item.name}</li>) }) } </ul> </div> );}export default App;

イベントに耳を傾けること:

addEventListener(event, function, useCapture);
  • 最初のパラメータはイベントのタイプです。
  • 第2引数は、イベント発生時に呼び出される関数です。
  • 3番目のパラメータは、イベントバブリングとイベントキャプチャのどちらを使用するかを指定するブーリアン値です。このパラメータはオプションです。

useCaptureのデフォルト値はfalseで、バブリング伝搬を使用します。この値をtrueに設定すると、イベントはキャプチャを使用して伝搬されます。

HTML DOMにおけるイベント伝播には、バブリングとキャプチャーという2つの方法があります。

イベントプロパゲーションは、イベントが発生したときの要素の順序を定義する方法です。もし

要素に

要素があり、ユーザーがその要素をクリックした場合、どの要素の "click "イベントを最初に処理すべきでしょうか?

要素をクリックした場合、どの要素の "click "イベントを最初に処理すべきでしょうか?

  • バブリングでは最も内側にある要素のイベントが最初に処理され、その後、さらに外側にある要素のイベントが処理されます。

    要素のクリックイベント、そして

    要素のクリックイベント、そして
  • キャプチャーでは一番外側の要素のイベントが最初に処理され、その後、より内側のイベントが処理されます。
    要素のクリックイベント、そして

    要素のクリックイベントの順に処理されます。

Read next

JVMメモリー構造

I.プログラム・カウンタ Java仮想マシン・スタック ローカル・メソッド・スタック ヒープ・メソッド領域 JDK1.8メタデータ領域は、永続的な生成に取って代わります。メタ空間と永続的な生成の性質は、メソッド領域のJVM仕様の実装に似ています。ただし、メタ空間とパーマネント生成は、最大の

Aug 20, 2020 · 5 min read

CSSの世界』からのメモ

Aug 18, 2020 · 3 min read

mqadmin管理ツール

Aug 18, 2020 · 10 min read

CDNアーキテクチャ

Aug 18, 2020 · 4 min read

java8-Optionalの正しい使い方

Aug 17, 2020 · 1 min read