본문 바로가기

목록이 없습니다.

[jQuery] event.preventDefault(), event.stopPropagation()

Framework/jQuery

    jQueryjQuery


    HTML 사용자 이벤트 전달 원리


    우리가 매일 사용하는 인터넷 즉, 웹에서는 사용자들이 가장 많이 발생시키는 이벤트 중 하나는 바로 클릭!


    사용자가 클릭을 하는 순간 HTML상의 요소들은 클릭을 당한(?) 요소부터 그 요소의 부모님들(?) 부모 요소까지 모두 같이 반응을 하게 되는데요


    ( 참고로 이러한 현상을 버블업[Bubble Up] 이라고 해요 )


    이런 현상을 이벤트가 전파, 확산 된다고 하는건데요 영어로는 propagation이라고 합니다


    예를들어 다음과 같은 HTML 코드가 있을 때


    1
    2
    3
    4
    5
    <ul>
        <li>
            <a href="#">Test</a>
        </li>
    </ul>
    cs


    a태그를 클릭하게 되면 그 상위 요소인 li 그리고 ul 까지 그 이벤트가 전파된다는 것입니다~




    event.stopPropagation()


    그러면 제목에서 언급했던 event.stopPropagation() 함수는 어떤 건지 느낌이 오실겁니다


    말 그대로 전파,확산(propagation)을 멈추는(Stop) 함수에요


    즉, 이벤트가 더 이상 확산되지 않고 그 요소에만 발생하도록 해주는 함수




    event.preventDefault()


    그렇다면 preventDefault() 함수는 어떤 기능을 하는걸까요?


    위의 예제 코드를 그대로 가져와서 활용해보면


    1
    2
    3
    4
    5
    <ul>
        <li>
            <a href="#">Test</a>
        </li>
    </ul>
    cs


    위의 a 태그에서 href가 "#"으로 설정이 되어 있는데 이는 앵커(닻)이라고 하는 것인데 "#"으로 설정을 하면 브라우저의 최상단을 가리키는 앵커로


    최하단에서 클릭할 경우 페이지의 최상단으로 화면이 이동되는데요


    이런 사용자들을 화나게하고 번거롭게하는 브라우저의 행위를 막아주는 함수가 바로 event.preventDefault() 함수입니다


    ( 물론 애초에 href를 "#"이 아닌 "#none"으로 설정하면 아무런 일도 일어나지 않는다 )


    정확한 preventDefault()함수의 기능은 위의 예제처럼 발생한 이벤트 외에 별도의 이벤트를 막기 위해 사용되요





    비슷한듯 다른 두 함수


    이렇게 느낌이 비슷하지만 엄연히 다른 jQuery의 두 가지 함수를 살펴봤는데요


    부족한 글 솜씨에 제대로 이해가 되셨을지 ..


    조금이나마 제 글이 도움이 되셨으면 좋겠습니다!


    끝까지 읽어주셔서 감사합니다


    ^____________^



    참고 : http://ismydream.tistory.com/98