본문 바로가기
JS

[jQuery] 이벤트 위임(Event Delegation)

by 리코더23 2023. 5. 12.

 

이벤트 위임 (Event Delegation)

: 동적으로 생성되는 요소에 대해 이벤트 처리를 쉽게 할 수 있는 방법. 대상 요소에 대해 일일이 이벤트 바인딩을 하지 않아도 되므로 코드의 성능도 개선되고 처리 속도가 빨라진다. 

 

jquery event

치킨먹고싶다

뿌링클
황금올리브
허니콤보
맵슐랭
어떤 치킨 ???

 

1. 제목 클릭 시 메뉴 옆에 새 메뉴 추가

2. 기존 메뉴 클릭 시 밑에 표시됨

>> 추가한 메뉴는 클릭해도 표시되지 않는 문제 발생!

 

 

// 기존 코드
$('h5').on("click", function(){
    $('#result22').text(this.innerText);
});

모든 'h5' 요소에 대해 click 이벤트를 바인딩한다. 하지만 이벤트 바인딩이 발생한 시점에서 이미 생성된 요소만 바인딩된다. 즉, 나중에 추가된 요소에 대해서는 이벤트가 동작하지 않는다. 

 

>> 해결

// on( 이벤트명, 자식, 함수명 )
$('#chicken').on("click", 'h5', function(){
    $('#result22').text(this.innerHTML);
});

부모 요소에 대해 click 이벤트를 바인딩한다. 이벤트 핸들러 함수 내부에서는 h5 요소를 대상으로 하여 이벤트를 처리한다. 이렇게 함으로써 나중에 추가된 요소에 대해서도 이벤트가 동작하게 된다.

 

 

+ 부모를 동적으로 생성하는 것은 이벤트 발생이 안됨

 

 

 

 

 

'JS' 카테고리의 다른 글

[jQuery] 선택자, 메소드 정리  (1) 2023.05.11
[jQuery] 입력 데이터 테이블에 추가하기  (0) 2023.05.11
[JS] append(), appendChild()  (0) 2023.05.08

댓글