더북(TheBook)

12.7.2 이벤트 취소하기

HTML 태그 중 일부는 기본으로 이벤트가 적용되어 있습니다. 대표적으로 a 태그와 form 태그가 그렇습니다. a 태그는 생성된 요소를 클릭하면 다른 페이지로 이동하도록 클릭 이벤트가 연결된 상태입니다. form 태그는 폼 내부에서 버튼이 눌리면 전송되도록 전송 이벤트가 연결된 상태입니다.

그런데 preventDefault() 메서드를 사용하면 태그에 기본으로 연결된 이벤트를 취소할 수 있습니다. 예로 a 태그에 연결된 클릭 이벤트를 취소해 보겠습니다. 다음 코드에는 2개의 a 태그가 있으므로 모든 요소 노드의 이벤트를 취소하려면 반복해서 개별 노드에 접근해야 합니다.

12/07/event_cancel.html

<a href="https://www.naver.com">네이버 이동</a>
<a href="https://www.daum.net">다음 이동</a>
<script>
  const aEls = document.querySelectorAll("a");
  for(let i = 0; i < aEls.length; i++){
    aEls[i].addEventListener("click", function(e){
      // 기본 이벤트 취소
      e.preventDefault();
    });
  }
</script>

그림 12-46 실행결과

예제 코드를 실행하면 a 태그로 작성된 요소가 보입니다. 하지만 preventDefault() 메서드에 의해 기본 이벤트가 취소되어서 링크를 아무리 클릭해도 해당 페이지로 이동되지 않습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.