컴퓨터/웹 : JS

[JQuery] 한방 정리/JQuery 사용법

도도새 도 2023. 5. 29. 09:08

선택자

  • 요소 선택자: $("element") (예: $("div"), $("p"))
  • 클래스 선택자: $(".class") (예: $(".red"), $(".my-class"))
  • 아이디 선택자: $("#id") (예: $("#my-id"))
  • 속성 선택자: $("[attribute]") (예: $("[name]"), $("[data-value]"))
  • 자식 선택자: $("parent > child") (예: $(".container > .item"))
  • 후속 선택자: $("element + sibling") (예: $("h2 + p"))
  • 형제 선택자: $("element ~ sibling") (예: $("ul ~ p"))
  • 필터 선택자:$(”element:양식필터) (예: $(”input:submit”))

반환값은 해당 하는 요소들을 담은 jQeury객체. 인덱스 (ex [0])로 접근하면 실제 DOM 객체를 얻을 수 있다.(*$('div')[0])**

$("p").filter(":even").css("color","red").end()
                .filter(":odd").css("color","green")

짝수번째 요소에 대하여 css적용 한다. 그리고 필터링을 초기화한다(end()) 그리고 다시 홀수 번째 요소에 대해 css를 적용한다.

 

메서드

 

선택 관련

  • .eq(index) : 선택한 요소 중 지정한 인덱스 요소선택
  • .first() : 선택한 요소 중 첫번째에 해당하는 요소 선택
  • .last() : 선택한 요소 중 마지막에 해당하는 요소 선택
  • find(하위요소) : 선택한 요소 중 조건에 맞는 요소를 찾음
    • $("ul").find("li")"ul" 요소의 모든 "li" 하위 요소를 선택합니다.
  • .children() : 선택한 요소의 자식 요소를 선택함
  • .parent() : 선택한 요소의 부모 요소를 선택함
  • .siblings() : 선택한 요소의 형제 요소들을 선택함
  • .next() : 선택한 요소의 다음 형제 요소 선택
  • .prev() : 선택한 요소의 이전 형제 요소 선택
  • add() : 문서 객체 추가 선택
let list = $(”h1”).add(”h2)

let list2 = $(”h1, h2”);

list == list2 //true

 

속성 관련

  • .attr() : 속성과 관련된 작업 실행, 선택한 문서 객체에 속성 추가 가능
    • .attr(name, value)
    • attr(name, callback)
    • .attr(object)
    • .attr(name)//해당 속성에 접근
    • .removeAttr(name) : 선택한 요소의 name 속성 제거
$(document).ready(()=>{
        let obj = {
            value:"this is new value!",
        }
        let a = $('input').attr(obj);
    })
  • .val() : 선택한 요소의 값을 가져오거나 설정
  • .text() : 선택한 요소의 텍스트 콘텐츠를 가져오거나 설정
  • .prop() : 선택한 요소의 프로퍼티(checekd, disabled 등)를 가져오거나 설정
  • .html() : 선택한 요소의 내부 HTML을 설정하거나 반환, 해당 요소의 내부 HTML을 완전히 대체
  • is() : 선택한 요소가 해당 특징을 가지는지 확인(속성, 클래스명 등)
<div>   
    <h1>Hello</h1>
    <h1>Hi</h1>
    <h1>Bye</h1>
</div>
-------
$(document).ready(()=>{
        let htmlString;
        htmlString = $('div').html();
        console.log(htmlString); 
        /*
                아래 형태의 문자열
        <h1>Hello</h1>
        <h1>Hi</h1>
        <h1>Bye</h1>
        */
        let html = $.parseHTML(htmlString);//문자열 html을 html로 변환
        $(html).css('background-color', 'red');
        $('div').append(html); //htmlString을 넣어도 됌...그러나 스트링에는 css적용 불가
    })

$(document).ready(()=>{
        $('h1').html("<input>");
    })//h1태그의 내부 html을 input으로 변경

 

클래스 관련

  • .addClass(’className’) : 선택한 요소에 클래스 속성 삽입
  • .removeClass(’className’) : 선택한 요소의 해당 클라스 속성 삭제
<input type="text" value="123">

    $(document).ready(()=>{
        let a = $('input').attr('value')
        console.log(a);//123
    })

 

CSS 관련

  • .css() : css와 관련된 기능 수행
    • .css(name, value)
    • $('h1').css('background-color', 'red');
    • .css(name, callback) 
      • <h1>Hello</h1> <h1>Hi</h1> <h1>Bye</h1> $(document).ready(()=>{ const colors = ['red', 'yellow', 'green']; $('h1').css('background-color', (index)=>colors[index]); })
      • .css(object)

css() 사용

 

제이쿼리 컬렉션 관련

  • each(callback) : 선택된 요소에 대해 반복 작업을 수행
$('h1').each((idx, ele)=>{
            $(ele).html(`${idx}`)//hi태그의 innerHTML값을 각각 0, 1, 2...로 변환
        })
  • filter(selector) : 선택된 요소에 대해 필터링 작업 수행
    • filter(selector) : selector에 해당하는 요소만 남긴다.
    • filter(callback) : 콜백함수 실행, 리턴값이 true인 요소만 남긴다
      • 가능한 파라미터
        1. index: 현재 요소의 인덱스를 나타내는 정수 값입니다.
        2. element: 현재 요소를 나타내는 DOM 요소입니다.
      $("li").filter(function() {
      return $(this).text().length >= 5;
      });
  • .length() : 컬렉션에 포함된 요소 개수 반환
  • .slice(start, end) : 컬렉션에서 지정된 범위의 요소들 선택, end는 선택 범위에서 제외됌

변환 관련

  • $.parseXML(string) : 해당 문자열을 xml로 변환
  • $.parseHTML(string) : 해당 문자열을 html로 변환
  • $.parseJSON(string) : 해당 문자열을 JSON으로변환
  • $(document).ready(()=>{ var xml = ''; xml += "<friends>" xml += " <friend>"; xml += " <name>홍길동</name>"; xml += " </friend>" xml += "</friends>"; var xmlData = $.parseXML(xml); })

 

문서 객체 생성/삭제

  • .remove() : 선택한 요소 삭제
  • .empty() : 선택한 요소 내부를 비움
$(document).ready(()=>{
        $('button').on('click',()=>{
            $('div').remove();
        })
    })

버튼을 클릭시 div태그 삭제. div내부 요소도 함께 삭제한다.

  • $(A).appendTo(B) : A를 B내부의 마지막에 추가
  • $(A).prependTo(B) : A를 B의 내부의 처음에 추가
  • $(A).insertAfter(B) : A를 B의 뒤에 추가
  • $(A).insertBefore(B) : A를 B의 뒤에 추가
<div style="border:1px solid red;">   
        <h1>Hello</h1>
    </div>
---------------
$(document).ready(()=>{
        const newTag = $("<h2> new h2 Tag <h2>");
        newTag.appendTo($('div'));
    })

appendTo

 

$(document).ready(()=>{
        const newTag = $("<h2> new h2 Tag <h2>");
        newTag.insertAfter($('div'));
    })

 

insertAfter

  • $(A).append(B) : B를 A의 내부 마지막에 추가
  • $(A).prepend(B) :B를 A의 내부 처음에 추가
  • $(A).after(B) : B를 A의 앞에
  • $(A).before(B) : B를 A의 뒤에 추가
  • .clone() : 요소 복사

*내부 요소까지 함께 추가, 복사된다.

const newTag = $("<button></button>", {
            type:'button'
        }).text("button Hi");

이러한 형태로 태그를 생성할 때, 객체 형식으로 쉽게 속성을 설정 가능하다.

 

이벤트

  • $(selector).on(eventType, [childSelector], [data], [handler]) : 이벤트 핸들러를 등록
    • selector: 이벤트 핸들러를 연결할 요소를 선택하는 선택자입니다.
    • eventType: 연결할 이벤트의 종류를 나타내는 문자열입니다. 예를 들어, "click", "mouseover", "keydown" 등의 이벤트 유형을 사용할 수 있습니다.
    • childSelector (선택사항): 선택자를 사용하여 특정 자식 요소에서 발생한 이벤트만 처리하도록 지정할 수 있습니다. 이는 이벤트 위임을 구현하는 데 유용합니다.
    • data (선택사항): 이벤트 핸들러에 전달할 추가 매개변수입니다. 이 매개변수는 이벤트 객체의 data 속성을 통해 접근할 수 있습니다.
    • handler: 이벤트가 발생했을 때 실행할 함수 또는 이벤트 핸들러입니다.
      eventType 설명
      click 요소를 클릭할 때 발생합니다.
      dblclick 요소를 빠르게 두 번 클릭할 때 발생합니다.
      mouseover 요소 위로 마우스를 움직일 때 발생합니다.
      mouseout 요소를 벗어날 때 발생합니다.
      focus 요소가 포커스를 받을 때 발생합니다.
      blur 요소가 포커스를 잃을 때 발생합니다.
      keydown 키보드의 키를 누를 때 발생합니다.
      keyup 키보드의 키를 뗄 때 발생합니다.
      submit 폼 요소가 제출될 때 발생합니다.
      change 입력 요소의 값이 변경될 때 발생합니다.
      select 텍스트 영역 내의 텍스트가 선택될 때 발생합니다.
      scroll 요소 내용이 스크롤될 때 발생합니다.
      load 요소(예: 이미지, 동영상)가 로드될 때 발생합니다.
      unload 페이지가 언로드될 때(뒤로가기 등) 발생합니다.
      resize 창 크기가 조정될 때 발생합니다.
      error 요소(예: 이미지)가 로드되지 못했거나 오류가 발생했을 때 발생합니다.
      $(document).ready(()=>{
            const evtObj = {
                'mouseover':()=>$('h1').css('background-color', 'red'),
                'mouseout':()=>$('h1').css('background-color', ''),
            }
            $('button').on(evtObj)
        })
      마우스 오버시 배경색을 빨간색으로 바꾸며, 마우스 아웃시 배경색 삭제한다.
    • <ul id="myList"> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul>

    $(document).ready(()=>{```위 코드는 위임 방식이다.
    • 이벤트 위임 장점
    1. 메모리 사용 감소: 개별적인 이벤트 핸들러를 각 자식 요소에 등록하는 것보다 메모리 사용을 줄일 수 있습니다. 이벤트 핸들러를 하나의 상위 요소에만 등록하기 때문에 메모리 사용이 효율적입니다.
    2. 동적 요소 지원: 동적으로 추가되거나 제거되는 요소에 대해서도 이벤트를 처리할 수 있습니다. 상위 요소에 이벤트 핸들러를 등록하면 새로운 자식 요소들이 추가되어도 해당 이벤트를 처리할 수 있습니다.
    3. 코드 유지보수 향상: 이벤트를 하나의 핸들러로 관리하기 때문에 코드 유지보수가 용이합니다. 새로운 자식 요소가 추가되더라도 추가적인 이벤트 핸들러를 등록할 필요가 없습니다.
  • *Event delegation(위임) : 이벤트 처리를 위해 이벤트를 부모 요소에게 위임하는 방식
  • #myList의 자식요소인 li에 대해서만 클릭 이벤트 핸들러를 등록한다.
  • $('#myList').on('click', 'li', function(event) { console.log($(this).text()); }); })
  • $(selector).off(eventType, handler) : 이벤트를 제거
    • eventType: 제거할 이벤트 타입을 지정합니다. 예를 들어, 'click', 'keydown', 'customEvent' 등의 이벤트 타입을 사용할 수 있습니다. 여러 개의 이벤트 타입을 동시에 제거하려면 공백으로 구분하여 나열할 수 있습니다.
    • handler (선택사항): 제거할 이벤트 핸들러 함수입니다. 특정 핸들러만 제거하고자 할 때 사용됩니다. 생략하면 지정된 이벤트 타입에 대해 등록된 모든 핸들러가 제거됩니다.
  • .triegger(eventType [, extraParameters ]) : 전달된 이벤트를 강제로 발생
    • eventType: 발생시킬 이벤트의 종류를 나타내는 문자열입니다. 예를 들어, "click", "mouseover", "customEvent" 등의 이벤트 유형을 사용할 수 있습니다.
    • extraParameters (선택사항): 이벤트 핸들러에 전달할 추가 매개변수입니다. 이 매개변수는 이벤트 객체의 data 속성을 통해 접근할 수 있습니다.
$('#myButton').on('click', function(event, data) {
  console.log('Button clicked!');
  console.log('Additional parameter:', data);
});

$('#myButton').trigger('click', 'Hello, World!');

on으로 이벤트 핸들러 등록. 이 이벤트 핸들러에서는 전달된 데이터를 출력.

trigger로 click이벤트를 발생시키며 Hello, World라는 매개변수를 이벤트 핸들러로 전달.

  • .preventDefault() : 기본 이벤트를 제거(ex: 폼 제출, 앵커태그로 주소이동)
  • .stopPropagation() : 이벤트 전달 제거

 

제이쿼리 ui

제이쿼리에 사용 가능한 플로그인인 jQuery UI이 있다. 이를 이용하면 제이쿼리로 각종 UI를 쉽게 만들 수 있다. 이 플러그인은 jQuery를 기반으로 작동하며, 웹 애플리케이션에 상호작용성과 시각적 요소를 추가하는 데 사용된다.

아래 사이트를 확인하면 각 이펙트별 사용법과 효과를 확인할 수 있다.

또한 기본적으로 존재하는 Jquery의 메소드를 오버라이딩 하는 경우가 있는데, addClass()의 경우가 그러하다.

기본적인 class를 넣는 작업을 하지만, 거기에 duration과 이펙트 효과를 추가할 수 있다.

https://api.jqueryui.com/

$(document).ready(()=>{
        $(function(){
            $(".a").hover(function(){
                $(this).addClass('hi', 1000);
            }, function(){
                $(this).removeClass('hi', 1000);
            })
        });

    })
<!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>Document</title>
    <div class="box">박스</div>
    <select class="selection" name="" id="">
        <option value="linear">linear</option>
        <option value="swing">swing</option>
    </select>
    <button type="button" class= "selectBtn">버튼</button>
</head>
<body>

</body>
</html>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script  src="jquery-ui.min.js"></script>
<script>
    $(document).ready(()=>{
        $(function(){
            $(".selectBtn").on('click', ()=>{
                const easing = $(".selection").val();
                console.log(easing);
                $('.box').addClass('red', 1000, easing);
                $('.box').removeClass('red', 1000, easing);

            })
        });

    })

</script>
<style>
    div{
        width:100px;
        height:100px;
    }
    .red{
        background-color: red;
    }
</style>

 

각종 메소드

이징에 따른 효과를 확인하는 코드

<!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>Document</title>

</head>
<body>
    <div class="box">박스</div>
    <button type="button" class= "selectBtn">버튼</button>
    <select name="" id="selection">
        <option value="linear">linear</option>
        <option value="swing">swing</option>
        <option value="easeInQuad">easeInQuad</option>
        <option value="easeOutQuad">easeOutQuad</option>
        <option value="easeInOutBounce">easeInOutBounce</option>
        <option value="easeInOutBounce">easeInExpo</option>
    </select>
</body>
</html>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script  src="jquery-ui.min.js"></script>
<script>
    $(document).ready(()=>{
        $(function(){
            $(".selectBtn").on('click', ()=>{
                const easing = $("#selection").val();
                console.log(easing);
                $('.box').addClass('red', 1000, easing, function(){
                    $(this).removeClass('red', 1000, easing);
                });
            })
        });

    })

</script>
<style>
    div{
        width:100px;
        height:100px;
    }
    .red{
        background-color: red;
        position: relative;
    }
</style>