Framework & Library/JQeury

[JQuery] ์ œ์ด์ฟผ๋ฆฌ์˜ Event ์ฒ˜๋ฆฌ

gangintheremark 2023. 7. 14. 16:28
728x90

๐ŸŽ€ ์ด๋ฒคํŠธ์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ด๋ฒคํŠธ ์—ฐ๊ฒฐ (event binding)

ํŠน์ • ์š”์†Œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ž‘์„ฑ๋œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํŠน์ • ์š”์†Œ(์ด๋ฒคํŠธ ์†Œ์Šค)์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ์ด๋ฒคํŠธ ์—ฐ๊ฒฐ(event binding)์ด๋ผ๊ณ  ํ•œ๋‹ค.

  • $(์ด๋ฒคํŠธ์†Œ์Šค).on("์ด๋ฒคํŠธํƒ€์ž…", ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜ );
<head>
    <script>
        $(document).ready(function () {
            // ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ด๋ฒคํŠธ ์†Œ์Šค ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ 

            // ๐Ÿ’ก button ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
            $("#ok").on("click", function () {
                console.log(this); // Js๊ฐ์ฒด
                console.log($(this)); // Jquery ๊ฐ์ฒด ๐Ÿ‘‰ ์ด๋ฒคํŠธ์†Œ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์–ด์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค
                console.log($(this).text()); // Jquery ๊ฐ์ฒด

                console.log(event); // Event ๊ฐ์ฒด
                console.log(event.target); // Event ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ์ด๋ฒคํŠธ ์†Œ์Šค ๊ฐ์ฒด ์ฐธ์กฐ๊ฐ€๋Šฅ
            });

            // ๐Ÿ’ก text ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
            $("#txtInput").on("keyup", function(){
                console.log($(this).val());
            });

            // ๐Ÿ’ก select ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
            $("select").on("change", function(){
                console.log($(this).val());
                console.log($(":selected").text());
            });

            // ๐Ÿ’ก submit ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ 
            $("form").on("submit", function(){
                // ์•„์ด๋””๋Š” ํ•„์ˆ˜ ํ•ญ๋ชฉ
                var id = $("#userid").val();

                if(id.length== 0){ // ์•„์ด๋””์— ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜์œผ๋ฉด
                    event.preventDefault(); // ์ž๋™ submit ๋ฐฉ์ง€
                    alert("์•„์ด๋””๋Š” ํ•„์ˆ˜"); // alert ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ
                    $("#userid").focus();  
                }
            });
        });
    </script>
</head>
<body>
    <button id="ok">OK</button><br>
    text:<input type="text" id="txtInput" /> <br>
    <hr>
    <form action="http://www.google.com">
        ์•„์ด๋””<input type="text" name="userid" id="userid"><br>
        ๋น„๋ฐ€๋ฒˆํ˜ธ<input type="text" name="passwd"><br>
        <select name="fruit">
            <option value="์‚ฌ๊ณผ">์‚ฌ๊ณผ</option>
            <option value="๋ฐ”๋‚˜๋‚˜">๋ฐ”๋‚˜๋‚˜</option>
            <option value="์ˆ˜๋ฐ•">์ˆ˜๋ฐ•</option>
        </select><br>
        <input type="submit" value="์ „์†ก">
    </form>
</body>

 

๐Ÿ’ก this

์ด๋ฒคํŠธ์— ์˜ํ•ด ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜ ์•ˆ์—์„œ this๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. $(this)๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ž๊ธฐ ์ž์‹ ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ผํ•œ ์†Œ์Šค๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” ๊ณณ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด class์˜ ์ด๋ฆ„์ด ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ ํ•œ ๊ตฐ๋ฐ์—๋งŒ ์ด๋ฒคํŠธ๋ฅผ ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.


๋™์ ์œผ๋กœ ์ถ”๊ฐ€๋œ DOM ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ด๋ฒคํŠธ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€๋œ ํƒœ๊ทธ์— ์ด๋ฒคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฒคํŠธ ์—ฐ๊ฒฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ค„์ง„๋‹ค.

  • $(document).on("์ด๋ฒคํŠธํƒ€์ž…", "#id๋ช…", ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌํ•จ์ˆ˜ )
<head>
    <script>
        $(document).ready(function () {

            $("#ok").on("click", function(){
                $("div").html("<button id='x'>ok</button>");
            });

             // ๋™์ ์œผ๋กœ ์ถ”๊ฐ€๋œ DOM๊ฐ์ฒด์— ๋Œ€ํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
            $("body").on("click", "#x", function(){
                console.log("ok");
            });
        });
    </script>
</head>

<body>
   <button id="ok"> ๋ฒ„ํŠผ ์ถ”๊ฐ€</button> <br>
   <div></div>
</body>


trigger ์ด๋ฒคํŠธ

trigger() ๋Š” ์„ ํƒ๋œ ์š”์†Œ์— ๊ฐ•์ œ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค.

  • $("selector").trigger("์ด๋ฒคํŠธํƒ€์ž…")
<head>
    <script>
        $(document).ready(function () {

            $("#ok").on("click", function(){
                $("#result").text("ok๋ฒ„ํŠผ์— trigger ์ด๋ฒคํŠธ ๋ฐœ์ƒ").css("color","red");
            });

            $("#ok2").on("click", function(){
                $("#ok").trigger("click");
                 // ok ๋ฒ„ํŠผ์— trigger ์ด๋ฒคํŠธ ๋ฐœ์ƒ
                 // ok2 ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ok๋ฒ„ํŠผ์„ ์•ˆ๋ˆŒ๋Ÿฌ๋„ ok๋ฒ„ํŠผ์ด click๋œ ๊ฒƒ์œผ๋กœ ์‹คํ–‰
            });
        });
    </script>
</head>

<body>
   <button id="ok">ok</button> <br>
   <button id="ok2">trigger</button> <br>
   <div></div>
</body>

</html>

728x90