Eggs Sunny Side Up
본문 바로가기
Web/JavaScript

jQuery

by guswn100059 2023. 4. 24.

jQuery 다운로드)


jQuery 기초)

<!DOCTYPE html>
<html lang="en">
<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>jQuery start</title>

    <!--1. 다운로드 방식-->
    <script src="./js/jquery-3.6.4.min.js"></script>

    <!--2. 네트워크 방식-->
    <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>

</head>
<body>
    <p>jQuery start</p>
    <button id="textBtn">TEXT</button>
    <button id="htmlBtn">HTML</button>

    <script>
        // jQuery / $
        // -> wrapper(래퍼) : 인자로 전달된 요소들에
        //                   jQuery의 기능성을 부가해서 반환
        // $(선택자).동적메소드()

        // 1. p태그에 접근
        let valJS = document.querySelector("p");
        console.log(valJS);

        // let valJQ = jQuery("p");
        let valJQ = $("p");
        console.log(valJQ);

        // 2. text 버튼 클릭 시 내용만 
        // JS -> innerText
        // jQuery -> text()
        $("#textBtn").click(()=> {
            console.log(valJS.innerText);
            valJS.innerText = "내용 변경";
            $("p").text("내용 변경");
        });

        // 3. html 버튼 클릭 시 태그까지
        // JS -> innerHTML
        $("#htmlBtn").click(()=> {
            valJS.innerHTML = '<a href="#">a태그로 변경</a>'
            $("p").html('<a href="#">a태그로 변경</a>');
            
        });

    </script>


</body>
</html>

jQuery 스타일)

<!DOCTYPE html>
<html lang="en">
<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>jQuery style</title>
    <script src="./js/jquery-3.6.4.min.js"></script>

</head>
<body>
    <p>jQuery style</p>
    <button>change!</button>

    <script>
        // 스타일 제어
        // JS -> style
        // jQuery -> css()
        $("button").click(()=> {
            // 1. 한줄씩 입력
            $('p').css("color", "salmon");
            // background-clor
            $("p").css("background-color", "blue");
            $("p").css('font-style', 'italic');


            // 2. chain 방식 입력
            // jQuery의 메소드는 메소드가 제어하는 대상을 리턴
            // -> 메소드를 계속해서 붙여넣는 chain 방식 사용 가능
            $('p').css("color", "salmon")
                  .css("background-color", "lightgray")
                  .css('font-style', 'italic');


            // 3. 객체로 입력
            $("p").css({
                "color":"salmon",
                "background-color":"lightgray",
                "font-style":"italic"
            });
        });


    </script>
</body>
</html>

마우스이벤트)

<!DOCTYPE html>
<html lang="en">
<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>mouse event</title>

    <style>
        .parentDiv {
            width: 200px;
            height: 200px;
            background-color: wheat;
            padding: 50px;
            margin: 10px;
        }

        .childDiv{
            width: 100%;
            height: 100%;
            background-color: olive;
        }

        
    </style>

    <script src="./js/jquery-3.6.4.min.js"></script>

</head>
<body>
    <div class="parentDiv">
        <div class="childDiv"></div>
    </div>

    <script>
        // 마우스 이벤트
        // mouseover -> 마우스 올렸을 때, 자식 요소 포함
        //              마우스 내렸을 때, mouseout
        // mouseenter -> 마우스 올렸을 때, 자식 요소 제외
        //               마우스 내렸을 때, mouseleave
        $(".parentDiv").mouseover(() => {
            console.log("mouseover 🥩🍗");
        })
        .mouseenter(() => {
            console.log("mouseenter 🍖");
        })



    </script>
</body>
</html>

마우스 이벤트 예제)

<!DOCTYPE html>
<html lang="en">
<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>event practice</title>

    <script src="./js/jquery-3.6.4.min.js"></script>

</head>
<body>
    <h1>Event 지정</h1>
    <h1>Event 지정</h1>
    <h1>Event 지정</h1>
    <button>change!</button>

    <script>
        // $(선택자).on(이벤트타입, 이벤트헨들러);

        // 1. 버튼을 클릭 시, h1 글씨색 파란색 변경
        $("button").on("click", () => {
            $('h1').css("color", "blue");
        });
        // 2. h1 마우스 올렸을 때, 글씨색 빨간색 변경
        $("h1").on('mouseover', function(){
            $(this).css("color", "red");
        })
        // 3. h1 마우스 내렸을 때, 글씨색 검은색 변경
        .on('mouseout', (e) => {
            console.log(e.target);
            $(e.target).css("color", "black");
        });


    </script>



</body>
</html>

동적이벤트)

<!DOCTYPE html>
<html lang="en">
<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>dynamic evnet</title>

    <script src="./js/jquery-3.6.4.min.js"></script>

    <style>
        button{
            width: 100px;
            height: 60px;
            margin: 5px;
            border: none;
            border-radius: 10px;
            font-weight: 600;
            font-size: 1.5rem;
        }

        .click{
            background-color: lightpink;
        }

        .on{
            background-color: lightblue;
        }



    </style>

</head>
<body>
    <button class="click">click</button>
    <button class="on">on</button>
    <br><br><br>

    <script>
        // click 버튼 클릭 시 -> click 버튼 생성
        $(".click").click(() => {
            // $(A).append(B) : A에 B를 추가
            $("body").append('<button class="click">click</button>');
        })

        // on 버튼 클릭 시 -> on 버튼 생성
        // $(document).on(이벤트타입, 이벤트대상, 이벤트핸들러);
        $(document).on("click", ".on", ()=>{
            $("body").append('<button class="on">on</button>');
        });



    </script>
</body>
</html>

좋아요 예제)

<!DOCTYPE html>
<html lang="en">
<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>like practice</title>

    <script src="./js/jquery-3.6.4.min.js"></script>

</head>
<body>
    <button class="likeBtn">좋아요</button>
    <span>0</span>
    <br><br>
    <input type="text">
    <button class="textBtn">댓글 작성</button>
    <br>
    <div class="container">
        <p>
            첫 댓글
            <button class="removeBtn">삭제</button>
            <br>
        </p>
    </div>

    <script>
        // 속성 추가, 제거 관련
        // attr(추가할 속성, 속성의 값) : 속성 추가 메소드
        // removeAttr(제거할 속성) : 속성 제거 메소드
        // removeClass(클래스 이름) :클래스 값 제거 메소드
        // remove() : 요소 자체를 지워버림
        // $(A).append(B) : B를 A요소 마지막 위치에 추가 메소드
        // $(A).prepend(B) : B를 A요소 첫 번째 위치에 추가 메소드

        // input 태그 관련
        // val() : input 입력 값 접근(JS - value)
        // input 안의 값 비워주기 -> input 반환객체.val('')

        // 1. 좋아요 버튼 클릭 시
        //    좋아요 -> 좋아요 취소
        //    0 -> 1
        $(document).on("click", ".likeBtn", function(){
            $(this).text("좋아요 취소");
            $("span").text("1");
            $(this).removeClass("likeBtn");
            // $(this).addClass("dislikeBtn"); 또는 아래 방법
            $(this).attr("class", "dislikeBtn");
        })

        // 2. 좋아요 취소 버튼 클릭 시
        //    좋아요 취소 -> 좋아요
        //    1 -> 0 
        $(document).on("click", ".dislikeBtn", (e)=>{
            $(e.target).text("좋아요");
            $("span").text("0");
            $(e.target).removeAttr("class");
            $(e.target).attr("class", "likeBtn");
        })

        // 3. 댓글 작성 버튼 클릭 시
        //    입력 내용 댓글 + 삭제 버튼 생성
        $(document).on("click", ".textBtn", ()=> {
            let textVal = $("input").val();
            $(".container").append(`
            <p>
                ${textVal}
                <button class="removeBtn">삭제</button>
                <br>
            </p>`);

            // 3-1. input 안의 값 비워주기
            $('input').val('');
        })

        // $(document).on("click", ".textBtn", ()=> {
        //     let textVal = $("input").val();
        //     $(".container").prepend(`
        //     <p>
        //         ${textVal}
        //         <button class="removeBtn">삭제</button>
        //         <br>
        //     </p>`);

        //     // 3-1. input 안의 값 비워주기
        //     $('input').val('');
        // })

        // 4. 삭제 버튼 클릭 시
        //    댓글 + 삭제 버튼 삭제
        // .parentNode: 요소의 부모에 접근
        $(document).on("click", '.removeBtn', (e)=>{
            $(e.target.parentNode).remove();
        })
    </script>
</body>
</html>

'Web > JavaScript' 카테고리의 다른 글

키보드이벤트  (0) 2023.04.24
스타일변경(객체이용)  (0) 2023.04.24
객체 실습  (0) 2023.04.20
객체  (0) 2023.04.19
함수  (0) 2023.04.18

댓글