jQuery EVENT Bubbling , this

2021. 12. 7. 13:21Study/jQuery

이벤트 동시에 발생 문제 (event bubbling)

 

var header = $('h1', this).text();

var paragraph = $('p', this).text();

  • this키워드를 $()메소드의 두번째 매개 변수로 넣어준다. 범위를 이벤트 발생 객체로 한정한다.
  • 이벤트 발생 객체 안에만 선택자를 적용할 수 있다.
  • 쉽게 말해 이벤트를 제공 받은 그 해당 객체(this)의 자식 객체 선택

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Q&A</title>
    <style>
        *{margin: 0; padding: 0;}
        body{font-family:'Spoqa Han Sans Neo'; font-size: 16px; color:#333; line-height:1.6; margin: 20px;}
        a{color:inherit; text-decoration:none;}
        img{vertical-align:top;}

        div{width:200px; margin:5px; padding:3px; border:1px solid red;}

    </style>
    <script src="./js/jquery-1.12.4.min.js"></script>
    <script>
        $(document).ready(function(){

            // // ERROR : div를 모두 클릭 하기 때문에 3가지씩 출력됨
            // $('div').click(function () {
            //     var header = $('h1').text(); // text값 리턴
            //     var paragraph = $('p').text();

            //     alert(header + '\n' + paragraph);
            // });

            
            // ERROR : div를 모두 클릭 하기 때문에 3가지씩 출력됨
            $('div').click(function () {
                var header = $('h1', this).text(); // text값 리턴
                var paragraph = $('p', this).text();

                alert(header + '\n' + paragraph);
            });


            // // 이렇게 구리게 할 수도 있다
            // $('.d1').click(function(){
            //     var header = $('.d1 h1').text();
            //     var paragraph = $('.d1 p').text();

            //     alert(header + '\n' + paragraph);
            // });

            // $('.d2').click(function(){
            //     var header = $('.d2 h1').text();
            //     var paragraph = $('.d2 p').text();

            //     alert(header + '\n' + paragraph);
            // });

            // $('.d3').click(function(){
            //     var header = $('.d3 h1').text();
            //     var paragraph = $('.d3 p').text();

            //     alert(header + '\n' + paragraph);
            // });

        });
    </script>
</head>
<body>

    <div class="d1">
        <h1>Header 1</h1>
        <p>Paragraph 1</p>
    </div>
    <div class="d2">
        <h1>Header 2</h1>
        <p>Paragraph 2</p>
    </div>
    <div class="d3">
        <h1>Header 3</h1>
        <p>Paragraph 3</p>
    </div>

</body>
</html>

 

 

'Study > jQuery' 카테고리의 다른 글

jQuery 간단 갤러리 index  (0) 2021.12.07
jQuery 시각효과  (0) 2021.12.07
jQuery toogle 더보기  (0) 2021.12.07
jQuery attr() 속성변경  (0) 2021.12.07
jQuery toggle(), hover()  (0) 2021.12.07