본문 바로가기
내마음대로만들어보자/JS

e.preventDefault() 와 stopPropagation() 의 차이

by 소농민! 2021. 6. 14.
728x90

1. e.preventDefault()

 

html 에서 a 태그나 submit 태그는 고유의 동작이 있다. (페이지 이동, input 전송 등)

이러한 동작을 e.preventDefault 는 중단시킨다.

 

예를들어, 

※ HTML

<a href="https://pa-pico.tistory.com">PAPICO 블로그로</a>

 

※ JS

$("a").click(function(e){

        e.preventDefault();

        alert("e.preventDefault()");

});

 

원래라면은 a 태그를 클릭했을 떄, 페이지이동이 이루어져야하지만 e.prenentDefault 는 그것을 중단시키고 자바스크립트에 짜여진 얼럿을 호출 시키는걸 볼 수 있다.

 

2. stopPropagation() 

 

※ HTML

<div class="first-cover">

    <ul class="second-cover">

      <li class="third-cover">

         <div class="last-el">event</div>

      </li>

   </ul>

</div>

 

※ JS

$(".last-el").click(function(e){

               e.stopPropagation();

               alert("last-el");

});

$(".third-cover").click(function(){

                    alert("third-cover");

});

$(".second-cover").click(function(){

                        alert("second-cover");

});

$(".first-cover").click(function(){

                         alert("first-cover");

});

 

e.stopProPagation() 함수가 없다면, ".last-el"에 해당하는 부분을 클릭하면 이벤트가 전파되어 얼럿이 연달아 발생하는걸걸 볼 수 있을것이다! 이때 사용하는게 e.stopProPagation() 함수다.

해당 함수를 사용하면 이벤트가 전파되지 않는걸 볼 수있다. 

 

 

결론은

e.preventDefault는 고유 동작을 중단시키고, e.stopPropagation 상위 엘리먼트들로의 이벤트 전파를 중단시킨다.

'내마음대로만들어보자 > JS' 카테고리의 다른 글

조건문 & 반복문  (0) 2021.08.12
자바스크립트 기본 제공함수  (0) 2021.08.12
리스트(배열) & 딕셔너리(객체)  (0) 2021.08.12
eq()  (0) 2021.06.14
개념정리(Javascript) - 반복문(For in)  (0) 2021.06.03