JavaScript/이론

[Javascript] 이벤트 위임

sirius 2021. 3. 15. 09:47
<ul id="itemList">
    <li class="item">item1</li>
    <li class="item">item2</li>
    <li class="item">item3</li>
</ul>
<p id="test"></p>

itemList 클릭 시 test에 붙여넣는 이벤트를 구현할 때

 

<script>
  document.addEventListener("DOMContentLoaded", function() {
    var items = document.getElementsByClassName("item");
    for(let item of items) {
        item.addEventListener("click", function() {
            document.getElementById("test").innerHTML = item.innerHTML;
        });
    }
  });
</script>

 item class를 찾아 class를 가진 해당 li 태그에 이벤트를 추가

li태그가 많아진다면 모두 DOM에 등록되어 비효율적인 코드가 됨

 

<script>
    document.addEventListener("DOMContentLoaded", function() {
        var app = document.getElementById("itemList");
        app.addEventListener("click", function(event) {
            if(event.target.nodeName == "li"){
                document.getElementById("test").innerHTML = event.target.innerHTML;
            }
        });
    });
</script>

item마다  EventListener를 생성하는 것보다 itemList를 DOM에 등록하여 EventListener가 사용자가 클릭한 item을 찾아 이벤트를 발생시키는 것이 효율적임