event 객체의 preventDefault, stopPropagation, bubbling 에 대해 알아보도록 하겠습니다.
우선 코드를 보겠습니다.
순서대로 [div1 > div2 > a > div3] 가 있습니다. 그리고 각 버튼에 이벤트를 정의하겠습니다. 각각의 div는 클릭시 id를 띄워주고 a링크는 클릭시 "a" 문자열을 띄워줍니다.
3. stopPropagation
클릭이벤트를 조금 변경해보겠습니다.
이번에는 div2 클릭이벤트에 e.stopPropagation() 이 추가되었습니다.
stopPropagation은 사용자이벤트의 버블링을 해제시켜 버립니다.
원래는 [div3 > div2 > div1] 이 버블링으로 하나로 묶였었는데 div2에서 버블링을 끊어버리면 div1과의 연결고리가 해제됩니다. 그러면 [div3 > div2]가 됩니다. div3를 눌러서 클릭이벤트를 실행시키면 [div3 > div2 > a] 가 실행됩니다.
4. preventDefault
클릭이벤트를 다시 변경해보겠습니다.
div1에 보면 e.preventDefault() 가 추가되었습니다. preventDefault()의 기능은 브라우저에 걸려있는 이벤트를 해제시켜버립니다. a링크뿐만아니라 map, 스크롤기능까지 브라우저의 이벤트 발생을 막아줍니다. 클릭이벤트를 실행시키면 [div3 > div2 > div1] 이 실행되고 preventDefault()가 브라우저의 이벤트를 해제시켜서 a링크는 실행되지 않습니다.
5. 정리
클릭이벤트를 다시 변경했습니다.
div2에서 stopPropagation을 div1에서 preventDefault 를 걸어주었습니다.
클릭 이벤트 발생히 어떤 결과가 나올지 예상이 되시나요?
실행결과는 [div3 > div2 > a] 가 됩니다. div1에서 preventDefault를 걸어주었지만 div2에서 stopPropagation으로 버블링을 해제하여 preventDefault는 실행되지 않았습니다.
이상으로 preventDefault, stopPropagation, bubbling에 대한 설명이였습니다.
'Programing > HTML' 카테고리의 다른 글
[CSS3] 큐브처럼 돌아가는 배너 (0) | 2014.03.21 |
---|---|
[CSS3] Nivo Slider Demo (1) | 2014.03.20 |
[jQuery] jQuery plugin 입니다. (2) | 2014.03.18 |
[jQuery] 슬라이더 배너 만드는 방법 (8) | 2014.03.13 |
[CSS3] 배너에 그림자를 입히는 원리② (0) | 2014.03.07 |
[CSS3] 배너에 그림자를 입히는 원리① (0) | 2014.03.07 |
[CSS3] CSS 접두어의 종류 (0) | 2014.03.07 |
[CSS3] 3D Image Slider (0) | 2014.02.26 |
[CSS3] CSS Filters (0) | 2014.02.26 |
[CSS3] References (0) | 2014.02.26 |