TechScribe Notes
[코딩애플;JS]이벤트 버블링 본문
💡이벤트 버블링 이란?
페이지 내에 어떤 태그에 이벤트가 발생하면 그의 모든 상위 요소까지 실행되는 현상을 말한다.
ex)클릭 이벤트의 경우
어떤 태그에 클릭이 발생 되면 그의 모든 상위 요소까지 자동으로 이벤트가 적용된다.
요런식으로 되어 있는데 p태그를 한번 클릭했을 뿐인데,
브라우저는 p, div, 맨위의 div 총 세번이 클릭되었다고 인지한다.
이것이 바로 이벤트 버블링.
이런것 때문에 문제가 발생하는 경우는
모달창의 배경('black-bg')을 클릭하면 모달창이 닫게 하도록 코드 짰는데,
이제는 그 모달안에 있는 인풋창 혹은 white-bg클릭을 해도 모달창이 닫히도록 적용되어 버린다.
그래서 이벤트리스터 함수에 파라미터에 아무거나 추가하면
(통상적으로는 'e') 이런 이벤트 관련한 유용한 함수들을 사용 가능하다.
✔️e.target은 실제 클릭한 요소 알려줌 (이벤트 발생한 곳)
✔️ e.currentTarget은 지금 이벤트리스너가 달린 곳 알려줌 (참고로 this라고 써도 똑같음)
✔️ e.preventDefault() 실행하면 이벤트 기본 동작을 막아줌
✔️ e.stopPropagation() 실행하면 내 상위요소로의 이벤트 버블링을 중단해줌
위의 파라미터와 함수를 사용하면
이벤트 버블링을 막을 수 있다.
그리고,
이렇게 되어있는 것을 우선 함수로 축약할 때,
이렇게 가능함. 그런데, 해당 함수안에 변수가 있다면
파라미터 처리로 해주어야 활용이 가능함.
이벤트 버블링을 이용하면,
tab-button에 각각 이벤트를 주는 것 보다 그 상위 요소인 .list에 주는 것이 더 간편.
이렇게 이벤트 리스너를 줄여서 코드 짜는 이유는
✔️버튼이 몇십개 있다면 이렇게 짜는것이 덜 복잡하고,
✔️ 이벤트리스너를 줄이면 램용량을 절약할 수 있다.
'프론트엔드 > JavaScript' 카테고리의 다른 글
[코딩애플;JS]array와 object /데이터바인딩 (4) | 2023.11.08 |
---|---|
[코딩애플;JS]array와 object (2) | 2023.11.08 |
[코딩애플;JS]반복문 이용하여 탭 기능만들기 (0) | 2023.11.08 |
[코딩애플;JS]스크롤 이벤트 (0) | 2023.11.07 |
[코딩애플;JS]return함수와 소숫점 (0) | 2023.11.07 |