관리 메뉴

武裝

jQuery 본문

프로그래머로 레벨업!/jQuery

jQuery

zeechive 2024. 4. 23. 12:49

- 자바스크립트 라이브러리 

- -jQuery 사용 방식 : $ ( 선택자 ) . 메소드

- 객체 선택에 대해서 선택자($) 를 제공하고, 효과(애니메이션), 조작, 이벤드 메서드를 제공한다. 

- 선택자 : 태그 전체는 그냥 작성, class는 점(.), id 는 # 사용하는 것 

 

웹 주소 : https://code.jquery.com/jquery-3.7.1.min.js 

제이쿼리 사전 : https://api.jquery.com/

 

 

사용 방법 

1. 직접 jQuery 사이트를 추가할 수 있다. 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src = 'https://code.jquery.com/jquery-3.7.1.min.js'></script>

</head>
<body>
    <h1> 안녕하세요 </h1>
    <script>
        console.log($('h1').text());
    </script>
</body>
</html>

 

 

 

2.jQuery CDN 다운로드 (속도가 조금 더 빠르다, 트레픽 용량이 조금 더 작다 ) 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> 

 

 

 

- 조작 

.addClass( 클래스명 ) : 클래스 추가 ( 후 리턴까지 한다. ) 

.removeClass( 클래스명 ) : 클래스 제거 

  <style> 
        .redColor{
            color : red;
        }
  </style>
</head>
<body>
    <h1> ch.01 </h1>
    <h1> ch.02 </h1>
    <h1> ch.03 </h1>
    <h1> ch.04 </h1>
    <h1> ch.05 </h1>

    <script>
        $('h1').addClass('redColor');
    </script>
</body>

 

 - h1 마다 class를 삽입하여 작성한 것이 아니라, 한 번에 class를 추가할 때 사용이 가능하다. 

 - 기존에 클래스가 있다면, 거기에 추가가 되기 때문에 add인 것이다. 

 

 

 - remove의 경우, 사용하게 된다면, 해당 값이 사라지고 class라는 것은 변함이 없게 된다. 

    <style> 
        .redColor{
            color : red;
        }
    </style>
</head>
<body>
    <h1> ch.01 </h1>
    <h1> ch.02 </h1>
    <h1> ch.03 </h1>
    <h1> ch.04 </h1>
    <h1 calss = "redColor"> ch.05 </h1>

    <script>
        $('h1').removeClass('redColor');
    </script>
</body>

- class 에 여러 클래스가 지정이 되어있다면, 하나만 삭제가 됨. 

 

 

 

 

 

 

인덱스 지정 방식 : eq( n )

- 배열이 아니기 떄문에, $('h1)[0] 이라는 방식으로 쓸 수 없다. 

  따라서, -번째 순서를 작성하려면 eq(0) 으로 작성해야 한다. 처음이 0번으로 시작하여 지정 

 

 

 

 

 

 

 

 

 

배열 반복 : each( 반복할 속성  , callback 함수 )

<body>
    <h1> ch.01 </h1>
    <h1> ch.02 </h1>
    <h1> ch.03 </h1>
    <h1> ch.04 </h1>
    <h1> ch.05 </h1>

    <script>
        $.each($('h1'), function(i, e){
            console.log(i, e);
        }) 
    </script>
</body>

i : 인덱스 / e : 속성 

 

- each 안으로 넣는 것만 가능한 게 아니라, callback을 위해서 작성해줘도 된다.

$('h1').each((i, e) => {console.log(i, e)})

 

 

- 직접 배열을 부르는 것도 할 수 있다. 

$.each([1,2,3], (i,e) => {console.log(i,e)})

 

 

 

 

 

 

 

 없으면 추가, 있으면 삭제 : .toggleClass( 클래스 명 )

$('h1').toggleClass('redColor');
<body>
    <h1> ch.01 </h1>
    <h1> ch.02 </h1>
    <h1> ch.03 </h1>
    <h1> ch.04 </h1>
    <h1 class = "redColor"> ch.05 </h1>
    <input type="button" id = "btn" value="토글">

    <script>
        $('h1').eq(0).addClass('redColor');

        $('#btn').click(function() {
           $('h1').toggleClass('redColor');    
        } );

    </script>

 

 

 

 

 

 

 

 

 

 

속성 값을 리턴 : .attr(속성명)  //  .attr(속성명, 속성값) 

<body>
    <input type="button" id = "btn" value="토글">
    <script>
        console.log($('#btn').attr('value'))
    </script>
</body>

 

 

- 속성명 뒤에 변경할 값을 작성하면, 해당 값으로 리턴하기도 한다. 

$('#btn').attr("value", "마술버튼");

 

 

 

- attr(객체) 의 경우에는 아래와 같이 작성 가능하다. 

        $('#btn').attr({
            value : '마술 버튼',
            style : 'background-color : olive'
        });

 

 

-removeClass 의 경우, 클래스 내부에 작성한 변수를 지워주지만 

- removeAttr 은, class 라는 속성 자체를 없애버린다. 

        $('h1').eq(4).removeAttr('class')

 

 

 

 

 

 

 

 

매개변수 혹은 텍스에 값이 있을 경우, 리턴. / 없다면 작성을 해준다. : .html(속성명) / .text( 값 ) 

        $('h1').eq(0).html("안녕");
        console.log($('h1').eq(0).html())

 

- 괄호 안에 아무것도 작성하지 않으면, 모두 리턴을 한다. 

 

 

        $('body').html("<h1>새로운 태그<h1>")
        $('body').text("<h1>새로운 태그<h1>")

상위의 코드는 html에 적용한 값으로 나오고, 하위의 태그는 <> 까지 포함한 문자열로 출력이 된다. 

 

 

 

 

 

 

스타일 속성 값을 리턴(스타일 같은 것)  : .css( 속성명 || 객체 ) 

     console.log($('h1').eq(0).css('color'));
     console.log($('h1').eq(0).css('color', 'blue'))

- 속성명만 호출하거나, 뒤에 하나를 더 넣어주면 해당 속성의 값을 변경하는 것 

- 삭제를 하기 위해서는 뒤에 공백('') 으로 작성해주면 된다. 

 

 

 

 

 

 

 

DOM 객체 삭제 : .remove()

DOM 객체를 비운다. : .empty()

        $('h1').eq(0).remove();
        $('h1').eq(0).empty();
        console.log($('h1'))

- remove 의 경우, 완전히 삭제를 한다. (선택자 포함, 자식까지 삭제)  

- empty 의 경우 내부에 있는 속성을 비우기만 하고, 아예 제거하는 것은 아니다. ( 콘솔로 확인하면 인덱스가 4개) 

 

 

 

 

 

 

 

 

내부에서 맨 뒤로 요소를 추가 : 추가대상.append( 추가 위치)  ||  추가대상.appendTo( 추가위치) 

        var text = "<h2> 추가된 요소 </h2>"
        $(text).appendTo($('h1').eq(4));

 

 

 

 

 

 

 

그 뒤에 추가하는 것 : 추가할 것. after( 추가할 위치 ) 

 

- append 는 내부에 추가하는 것이라면, after은 바깥쪽 뒤에 추가하는 것이다. 

 

 

 

 

복사 : clone() 

        $('h1').eq(0).clone().appendTo($('h1').eq(4))

 

 

 

 

value 값을 리턴 / 값을 저장 : .val() / .val(저장할 값) 

 

 

인덱스 호출하는 속성 : index( 인덱스 호출할 내용) 

사용자 정의 속성 : data-   나중에 호출할 때는 data("속성명") 으로 확인해주면 된다. 

 

    <script src = 'https://code.jquery.com/jquery-3.7.1.min.js'></script>
    <script>
        $(function(){
            $(".kirby").click(function(){
                var idx = $(".kirby").index($(this)); // class에서 몇 번째인 건지 리턴하게 된다. 
                $("input[type='hidden']").eq(idx).val(); // 히든 인풋인 것들이 몇 번째의 인덱스인 건지 리턴하는 것 
                console.log( $(".kirby").index($(this)))

                //사용자 정의 속성 사용 
                console.log($(this).data("name"))
            })
        })
    </script>
</head>
<body>
    <!-- 사용자 정의 속성 (data - ) 로 작성하면 된다. -->
    <img src="img/kirby1.png" class="kirby" data-name = "A">
    <img src="img/kirby1.png" class="kirby" data-name = "B">
    <img src="img/kirby1.png" class="kirby" data-name = "C">
    <img src="img/kirby1.png" class="kirby" data-name = "D">
    <img src="img/kirby1.png" class="kirby" data-name = "E">

    <!--선택하면 큰 이미지를 끌고 오는 건 input type hidden으로 숨겨 놓을 수 있다-->
    <input type = "hidden" name = "imgName" value="A">
    <input type = "hidden" name = "imgName" value="B">
    <input type = "hidden" name = "imgName" value="C">
    <input type = "hidden" name = "imgName" value="D">
    <input type = "hidden" name = "imgName" value="E">
</body>

- jquery 에서 this를 사용하려면 한 번 묶어줘야 한다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

이벤트 

- 호출 방식 :  .이벤트명(콜백함수)  || .bind(이벤트명, 콜백함수)  ||  .on(이벤트명, 콜백함수)

- 제거 방식 : .off(이벤트명)

- 웹문서 로딩 순서 : 요청 → 응답    브라우저가 문서 해석    DOM 생성   ready 실행  

                                  →  이미지, 동영상, CSS ... 로드     렌더링 종료     load 

    <script>
        window.onload = function(){
            alert('load'); // 문서가 전부 로드가 되고 나서 실행 
        }
        $(document).ready(function(){
            alert('ready') // dom이 생성이 된 후 
        })
        $(function(){
            alert('$function') // document와 동일 
        })
    </script>

- ready 우선 출력 후($function도 출력 후) load 가 보인다. 

- 작업할 때 언제 보여야 하는 것인지(시점) , 어디서 보여야 하는 것인지( 이벤트 대상)

                   이벤트의 종류, 이벤트발생 시 실행될 함수를 확인해야 한다. 

 

 

 

클릭하면 이벤트 발생하게 : .click( 콜백 함수 ) 

    <script>
        $(function(){
            $(".list").click(function(){
                alert($(this).text());
            })
        })
    </script>
</head>
<body>
    <div class = "list"> 제목 1 </div>
    <div class = "list"> 제목 2 </div>
    <div class = "list"> 제목 3 </div>
    <div class = "list"> 제목 4 </div>
    <div class = "list"> 제목 5 </div>
</body>

- this 를 사용하여, 클릭할 때마다 그에 맞는 text가 출력이 되게 하는 것. 

 

 

 

클래스의 존재 여부 : .hasClass( 클래스명 ) 

 

 

 

 

 

 

 

 

 

 

 

 

 

'프로그래머로 레벨업! > jQuery' 카테고리의 다른 글

jQuery 효과  (0) 2024.04.24