Event

sujeong kim·2021년 6월 4일
0

Event란?

event 등록하기

이벤트 전파

버블링
이벤트 버블링이란 해당 요소에서 발생한 이벤트가 부모에게 전달되는 현상을 의미합니다.
부모에게까지 이벤트가 전달되지 않기를 바란다면 stopPropergation()을 이벤트 리스너 안에 작성합니다.

wrapper.addEventListener('click', function(e) {
  const targetElem = e.target;
  e.stopPropagation();
});

캡쳐링

event-delegation

다수의 자식 요소에게 이벤트를 걸 때, 이벤트가 너무 많이 생기니 최적화를 위해 부모에게 이벤트를 넘겨줍니다.
아니면 동적으로 생성되는 요소는 처음에 그 요소가 생성되지 않아 이벤트를 걸어놓을 수 없어 부모에게 이벤트를 넘깁니다.
그리고 event.target을 이용해 이벤트 핸들러 처리를 합니다.

event.target: 부모로부터 이벤트가 위임되어 발생하는 자식의 위치, 내가 클릭한 자식 요소를 반환한다.
event.currentTarget: 이벤트가 부착된 부모의 위치를 반환한다.

단, jquery는 이미 이벤트 위임이 구현되어 있습니다.

$('.wrapper').on("click", ".item", function() {...});

이벤트 취소

preventDefault
이벤트를 취소할 수 있는 경우, 이벤트의 전파를 막지않고 그 이벤트를 취소합니다.
이벤트를 취소하는 도중에 preventDefault를 호출하게되면, 일반적으로는 브라우저의 구현에 의해 처리되는 기존의 액션이 동작하지 않게되고, 그 결과 이벤트가 발생하지 않게됩니다.
이벤트의 취소가능 여부는 event.cancelable를 사용해서 확인할 수 있습니다. 취소불가능한 이벤트에 대해서 preventDefault를 호출해도 결과는 없습니다.

<html>
<head>
<title>preventDefault 예제</title>

<script type="text/javascript">
  function stopDefAction(evt) {
    evt.preventDefault();
  }
</script>
</head>

<body>

<p>체크박스 컨트롤을 클릭해 주세요</p>

<form>
  <input type="checkbox" onclick="stopDefAction(event);"/>
  <label for="checkbox">체크박스</label>
</form>

</body>
</html>
profile
개발자

0개의 댓글