728x90
300x250
SMALL
event.target
이벤트가 발생한 정확한 지점에 대한 정보를 반환한다.
- event.target는 실제 이벤트가 시작된 target요소 버블링 되어도 변하지 않음
- this(=event.curentTarget)는 현재 샐행중인 핸들러가 할당된 노드를 참조
이벤트 위임(event delegation)
요소마다 이벤트 핸들러를 할당하지 않고 공통 조상요소에 할당해서 한개의 이벤트 핸들러로 여러 요소를 한꺼번에 처리 할 수 있다.
공통 조상에 할당한 핸들러에서 event.target를 이용하면 실제 이벤트가발생한 위치를 알 수 있고 이를 이용해서 이벤트를 핸들링 할 수 있다.
하나의 이벤트 리스너로 여러 이벤트 처리하기
$대상.on("이벤트명", "선택자", 이벤트 리스너)
아래는 ul li리스트 중 하나를 클릭하면 click이벤트가 실행
현재 클릭된 노드 this에 css를 적용
<script>
$(document).ready(function() {
$("ul.list li").on("click", function() {
$(this).css('background-color','#ddd')
})
});
</script>
<ul class="list">
<li>list1</li>
<li>list2</li>
<li>list3</li>
<li>list4</li>
</ul>
위의 click 이벤트가 실행되면 각 메뉴 항목마다 이벤트 리스너가 등록되게된다.
각각의 li마다 이벤트 리스너가 등록되게 된다.
이 때 이벤트 위임을 사용하면 이벤트 리스너를 하나만 등록하고 동일한 효과를 줄 수 있다.
$("ul").on("click", function(e) { //li가 아니라 상위공통 요소인 ul에 click 이벤트 등록
if(e.target.tagName=="LI"){ //e.target(이벤트를 발생한 노드)가 li면 실행
$(e.target).css('background-color','#ddd');
}
})
상위 고통 부모 요소인 UL태그에 Click 이벤트를 등록 하면 한번만 등록 된다.
li를 클릭해도 버블링에 의해서 dom구조를 타고 ul에 걸려있는 click 이벤트가 실행되
실제 이벤트가 어디서 시작했는지 e.target 메서드를 사용하면 타겟된 지점을 알 수 있다. 클릭한 영역 태그가 li인지 확인하고 맞을 경우 해당 li에 배경색 변경
이처럼 버블링 이벤트 위임 event.target을 이용하여 이벤트 리스너 하나로 여러 이벤트를 처리 할 수 있다.
이벤트 위임의 특징
- 각 항목마다 이벤트 리스너가 등록되는게 아니고 공통 하나로 처리하기 때문에 메모리가 절약된다.
- 이벤트 위임을 사용하려면 반드시 버블링이 발생 되야 한다.
728x90
반응형
LIST
'javaScript > jQuery' 카테고리의 다른 글
jQuery 사용자 정의 이벤트2- 비공개 (0) | 2023.03.16 |
---|---|
trigger 버튼 클릭 없이 이벤트 발생 시키기 (0) | 2023.03.14 |
오토플레이 적용하기 - 비공개 (0) | 2023.02.22 |
여러 개 이미지 속성 값 변경하기 data() (0) | 2023.02.20 |
이미지 여러 개 속성 값 변경 attr() (0) | 2023.02.19 |
댓글