jQuery

zooyeongΒ·2023λ…„ 3μ›” 22일
0

8μ£Όμ°¨

λͺ©λ‘ 보기
2/6
post-thumbnail

πŸ“ŒjQuery() ν•¨μˆ˜

λͺ¨λ“  μ‹œμž‘μ€ jQuery() ν•¨μˆ˜λ₯Ό 톡해 이루어진닀. κ΄„ν˜Έ μ•žμ˜ 'jQuery' λ¬Έμžμ—΄μ€ jQueryλ₯Ό μ‚¬μš©ν•œλ‹€λŠ” μΌμ’…μ˜ 선언이닀. jQuery() ν•¨μˆ˜μ˜ 3가지 μž…λ ₯ 인자 μœ ν˜•μ€ λ‹€μŒκ³Ό κ°™λ‹€.

  1. μ„ νƒμž μž…λ ₯ 인자 jQuery('body p');
  2. HTML μž…λ ₯ 인자 jQuery('<h1>h1νƒœκ·Έ</h1>').appendTo('body')
  3. ν•¨μˆ˜ μž…λ ₯ 인자 jQuery(function() {});

jQuery() ν•¨μˆ˜μ˜ λ‹¨μΆ•ν˜•μœΌλ‘œ $ 기호λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. μ½”λ“œ μ•ˆμ˜ jQuery() ν•¨μˆ˜ 식별이 μ–΄λ ΅κ³  λΆˆνŽΈν•˜κΈ° λ•Œλ¬Έμ— $()둜 ν‘œμ‹œν•œλ‹€.

πŸ“ŒjQuery μ„ νƒμž μœ ν˜•

πŸ’‘μœ„μΉ˜ν•„ν„° κΈ°λ³Έ μ„ νƒμž

*ν•„ν„°(filter)λŠ” μ„ νƒμžμ— μ˜ν•΄ μ„ νƒλœ μ—˜λ¦¬λ¨ΌνŠΈλ“€ μ€‘μ—μ„œ ν•„ν„° 쑰건에 λ§žλŠ” μ—˜λ¦¬λ¨ΌνŠΈλ“€λ‘œ 선택 λŒ€μƒμ„ μ’€ 더 μ œν•œν•˜λŠ” μ„ νƒμž μœ ν˜•μ΄λ‹€.

ν˜•μ‹ κΈ°λŠ₯(μš”μ†ŒλŠ” 0λΆ€ν„° μ‹œμž‘)
:first μ„ νƒλœ μš”μ†Œλ“€ 쀑에 첫 번째 μš”μ†Œλ₯Ό 선택
:last μ„ νƒλœ μš”μ†Œλ“€ 쀑에 λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό 선택
:odd μ„ νƒλœ μš”μ†Œλ“€ 쀑에 ν™€μˆ˜ 번째 μš”μ†Œλ₯Ό 선택
even μ„ νƒλœ μš”μ†Œλ“€ 쀑에 짝수 번째 μš”μ†Œλ₯Ό 선택
eq(n) μ„ νƒλœ μš”μ†Œλ“€ 쀑에 n번째 μš”μ†Œλ₯Ό 선택
ex) $('li:eq(4)') λ‹€μ„―λ²ˆμ§Έ li νƒœκ·Έλ₯Ό 가리킴
lt(n) μ„ νƒλœ μš”μ†Œλ“€ 쀑에 n보닀 μ•žμ˜ μš”μ†Œλ“€μ„ 선택
gt(n) μ„ νƒλœ μš”μ†Œλ“€ 쀑에 n보닀 λ’€μ˜ μš”μ†Œλ“€μ„ 선택
not() μ„ νƒλœ μš”μ†Œλ“€ 쀑에 필터링 쑰건을 λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” μš”μ†Œλ“€μ„ 선택

πŸ’‘μœ„μΉ˜ν•„ν„° 계측 μ„ νƒμž

ν˜•μ‹ κΈ°λŠ₯(μš”μ†ŒλŠ” 1λΆ€ν„° μ‹œμž‘)
:first-child μ„ νƒλœ μš”μ†Œλ“€ 쀑에 λΆ€λͺ¨μ˜ 첫 번째 μžμ‹ μš”μ†Œ 선택
:last-child μ„ νƒλœ μš”μ†Œλ“€ 쀑에 λΆ€λͺ¨μ˜ λ§ˆμ§€λ§‰ μžμ‹ μš”μ†Œ 선택
:nth-child(odd) μ„ νƒλœ μš”μ†Œλ“€ 쀑에 λΆ€λͺ¨μ˜ ν™€μˆ˜ 번째 μžμ‹ μš”μ†Œλ“€μ„ 선택
:nth-child(even) μ„ νƒλœ μš”μ†Œλ“€ 쀑에 λΆ€λͺ¨μ˜ 짝수 번째 μžμ‹ μš”μ†Œλ“€μ„ 선택
:nth-child(n) μ„ νƒλœ μš”μ†Œλ“€ 쀑에 λΆ€λͺ¨μ˜ n번째 μžμ‹ μš”μ†Œ 선택
:nth-child(Xn+Y) μ„ νƒλœ μš”μ†Œλ“€ 쀑에 λΆ€λͺ¨μ˜ Y번째 λΆ€ν„° μ‹œμž‘ν•΄μ„œ X배수 λ²ˆμ§Έμ— μžˆλŠ” μžμ‹ μš”μ†Œ 선택
:only-child μ„ νƒλœ μš”μ†Œλ“€ 쀑에 ν˜•μ œ μš”μ†Œκ°€ μ—†λŠ” μœ μΌν•œ μžμ‹ μš”μ†Œ 선택

πŸ“ŒjQuery μŠ€νƒ€μΌ κ΄€λ ¨ λ©”μ†Œλ“œ

  • $().css(CSS속성λͺ…) : μ„ νƒλœ μš”μ†Œμ— 적용된 CSSμŠ€νƒ€μΌ 속성값을 λ°˜ν™˜
  • $().css(CSS속성λͺ…, CSS속성값) : μ„ νƒλœ μš”μ†Œμ— CSSμŠ€νƒ€μΌ 적용
  • $().css({CSS속성λͺ…:CSS속성값, CSS속성λͺ…:CSS속성값}) : μ€‘κ΄„ν˜Έ{}λ₯Ό 톡해 μ—¬λŸ¬κ°œμ˜ CSSμŠ€νƒ€μΌ 적용
  • $().addClass(CSS클래슀λͺ…) : μ„ νƒλœ μš”μ†Œμ— class 속성값을 적용
  • $().removeClass(CSS클래슀λͺ…) : μ„ νƒλœ μš”μ†Œμ˜ class 속성값을 제거
  • $().toggleClass(CSS클래슀λͺ…) : μ„ νƒλœ μš”μ†Œμ— class 속성값이 μ‘΄μž¬ν•˜λ©΄ 제거, μ—†μœΌλ©΄ μΆ”κ°€

πŸ’¬ CSS 속성에 μ ‘κ·Όν•  λ•ŒλŠ” .css()

//ex)
$('.box').css("backgroundColor", "red");
$('.box').css({
  backgroundColor : "red",
  width : "100px",
  height : "100px"
});

πŸ’¬ HTML 속성에 μ ‘κ·Όν•  λ•ŒλŠ” .attr()

//ex)
$('a').attr("href", "https://www.daum.net");
$('img').attr({
  src : "../images/fish.png",
  width : 100,
  height : 100,
  alt : "λ¬Όκ³ κΈ°κ·Έλ¦Ό"
});

->.css처럼 .attr도 μ—¬λŸ¬ 속성을 μ€‘κ΄„ν˜Έ {}λ₯Ό 톡해 μ μš©ν•  수 μžˆλ‹€.
κΈ°μ‘΄ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” css에 μ ‘κ·Όν•  λ•Œ μ—¬λŸ¬ μš”μ†Œλ“€μ˜ 속성을 μ μš©ν•˜λ €λ©΄ for문을 μ¨μ•Όν–ˆλ‹€. jQueryλŠ” μ—¬λŸ¬ μš”μ†Œλ“€μ˜ 속성도 ν•œ λ²ˆμ— λ³€κ²½ν•  수 μžˆλ‹€.(μ•„λž˜ μ½”λ“œ μ°Έμ‘°)

//JS둜 μ²˜λ¦¬ν•˜λŠ” 방법
const lis = document.querySelectorAll('#targetul li');
for(let el of lis){
  el.style.color = 'red';
}

//jQuery둜 μ²˜λ¦¬ν•˜λŠ” 방법
$('#targetul li').css('color', 'red');

πŸ“ŒDOM 트리 κ΄€λ ¨ λ©”μ†Œλ“œ

πŸ’‘DOM 필터링 λ©”μ†Œλ“œ

  • $().filter() : μ„ νƒλœ μš”μ†Œλ“€ 쀑에 필터링 쑰건을 μΆ©μ‘±ν•˜λŠ” μš”μ†Œλ₯Ό λ°˜ν™˜
  • $().first() : μ„ νƒλœ μš”μ†Œλ“€ 쀑에 첫 번째 μš”μ†Œλ₯Ό λ°˜ν™˜
  • $().last() : μ„ νƒλœ μš”μ†Œλ“€ 쀑에 λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό λ°˜ν™˜
  • $().eq(n) : μ„ νƒλœ μš”μ†Œλ“€ 쀑에 n번째 μš”μ†Œλ₯Ό λ°˜ν™˜
  • $().has() : μ„ νƒλœ μš”μ†Œλ“€ 쀑에 νŠΉμ • μžμ† μš”μ†Œλ₯Ό κ°–λŠ” μš”μ†Œλ₯Ό λ°˜ν™˜

πŸ’‘DOM 트리 μ—˜λ¦¬λ¨ΌνŠΈ μ‘°μž‘ λ©”μ†Œλ“œ

  • $().append() : μ„ νƒλœ μš”μ†Œμ˜ λ§ˆμ§€λ§‰ μžμ‹ μš”μ†Œλ‘œ μΆ”κ°€
  • $().prepend() : μ„ νƒλœ μš”μ†Œμ˜ 첫 번째 μžμ‹ μš”μ†Œλ‘œ μΆ”κ°€
  • $().remove() : μ„ νƒλœ μš”μ†Œλ₯Ό 제거

πŸ“Œμ΄λ²€νŠΈ λ©”μ†Œλ“œ

πŸ’‘μ΄λ²€νŠΈ λ‹¨μΆ•ν˜• λ©”μ†Œλ“œ

  • $().click() : 마우슀둜 클릭할 λ•Œ λ™μž‘
  • $().hover() : 마우슀 포인터가 λ“€μ–΄μ˜¬ λ•Œ λ™μž‘
  • $().toggle : 마우슀λ₯Ό 클릭할 λ•Œ 두 ν•¨μˆ˜λ₯Ό λ²ˆκ±Έμ•„ λ™μž‘
  • $().focus() : 포컀슀λ₯Ό 얻을 λ•Œ λ™μž‘
  • $().blur)_ : 포컀슀λ₯Ό μžƒμ„ λ•Œ λ™μž‘
  • $().keydown() : ν‚€λ³΄λ“œλ₯Ό λˆŒλ €μ„ λ•Œ λ™μž‘
  • $().ready() : λΈŒλΌμš°μ €μ— λ¬Έμ„œκ°€ μ½ν˜€μ§ˆ λ•Œ λ™μž‘

πŸ’¬ $(document).ready와 $(document).on

$(document).readyλŠ” DOM이 μ€€λΉ„κ°€ λ˜μ—ˆμ„ λ•Œ click 이벀트λ₯Ό μ‹œμž‘ν•˜κ² λ‹€λ‘œ κ°„μ£Όν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ λ™μ μœΌλ‘œ μƒμ„±λ˜λŠ” μš”μ†Œμ—λŠ” λ°˜μ˜λ˜μ§€ μ•ŠλŠ”λ‹€. λ™μ μœΌλ‘œ μƒμ„±λ˜λŠ” μš”μ†ŒλŠ” λ²„νŠΌ 등을 μ΄μš©ν•΄ μƒˆλ‘œ μΆ”κ°€λœ νƒœκ·Έλ‚˜ μš”μ†Œ 등을 예둜 λ“€ 수 μžˆλ‹€. μ΄λŸ¬ν•œ 동적 μš”μ†Œμ—λŠ” 이벀트λ₯Ό μ–΄λ–»κ²Œ ν• λ‹Ήν•˜λŠλƒκ°€ 문제인데, $(document).on을 톡해 전달할 수 μžˆλ‹€. $(document).on은 μœ„ μš”μ†ŒλΆ€ν„° μ•„λž˜ μš”μ†ŒκΉŒμ§€ μ΄λ²€νŠΈκ°€ μ „ν•΄ λ‚΄λ €κ°€κΈ° λ•Œλ¬Έμ΄λ‹€.


πŸ“Œμ‚¬μš©μž μ •μ˜ 효과 생성

πŸ’‘animate()

animate(ν”„λ‘œνΌν‹°, 초(ms), ν•¨μˆ˜) : μ„ νƒλœ μš”μ†Œμ— λŒ€ν•΄ 직접 μ„€μ •ν•œ μ• λ‹ˆλ©”μ΄μ…˜ 효과λ₯Ό 적용

πŸ”₯μ—°μŠ΅λ¬Έμ œ
λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ λ¬Όκ³ κΈ°κ°€ 쒌우둜 μ›€μ§μ΄κ²Œ λ§Œλ“€κΈ°!

<!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>
  <style>
    body {
      font-size: 9pt;
    }

    #panel {
      width: 600px;
      height: 300px;
      border: 1px solid #999;
      position: relative;
    }

    #bar {
      position: absolute;
      left: 50px;
      top: 190px;
      width: 500px;
      height: 20px;
      background: #F30;
    }

    #fish {
      position: absolute;
      left: 50px;
      top: 120px;
    }

    #nav {
      text-align: center;
      width: 600px;
    }
  </style>

  <head>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js" integrity="sha512-pumBsjNRGGqkPzKHndZMaAG+bir374sORyzM3uulLV14lN5LyykqNk8eEeUlUkB3U0M4FApyaHraT65ihJhDpQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script>
      /*
      예제01: λ¬Όκ³ κΈ°λ₯Ό ν˜„μž¬ μœ„μΉ˜μ—μ„œ 430px μœ„μΉ˜λ‘œ λΆ€λ“œλŸ½κ²Œ 움직이도둝 μ‹œμž‘ λ²„νŠΌμ„ λ§Œλ“€μ–΄μ£Όμ„Έμš”.
       */

      $(document).ready(function () {
        // λ¬Όκ³ κΈ° λ…Έλ“œ κ΅¬ν•˜κΈ°.
        var $fish = $("#fish");
        let flag = true;

        $("#btnStart").click(function () {
          if(flag){
            $fish.animate({
              left: "430px"
            }, 1000);
            flag = false;
          } else {
            $fish.animate({
              left: "50px"
            }, 1000);
            flag = true;
          }
        });
        
    </script>

  </head>

<body>
  <div id="panel">
    <div id="bar"></div>
    <img src="fish1.png" id="fish">
  </div>

  <div id="nav">
    <button id="btnStart">
      λ¬Όκ³ κΈ° 움직이기
    </button>
  </div>
</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>Document</title>
  <style>
    body {
      font-size: 9pt;
    }

    #panel {
      width: 600px;
      height: 300px;
      border: 1px solid #999;
      position: relative;
    }

    #bar {
      position: absolute;
      left: 50px;
      top: 190px;
      width: 500px;
      height: 20px;
      background: #F30;
    }

    #fish {
      position: absolute;
      left: 50px;
      top: 120px;
    }

    #nav {
      text-align: center;
      width: 600px;
    }
  </style>

  <head>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js" integrity="sha512-pumBsjNRGGqkPzKHndZMaAG+bir374sORyzM3uulLV14lN5LyykqNk8eEeUlUkB3U0M4FApyaHraT65ihJhDpQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script>

      $(document).ready(function () {
        // λ¬Όκ³ κΈ° λ…Έλ“œ κ΅¬ν•˜κΈ°.
        var $fish = $("#fish");
        let flag = true;
        let leftVal = "50px";
        
      	// λ²„νŠΌμ— 이벀트 κ±ΈκΈ°.
        $("#btnStart").click(function () {
          if(flag){
            $fish.attr("src", "fish1.png");
            $fish.animate({
              left: "430px"
            }, 1000, function(){ //μ½œλ°±ν•¨μˆ˜(λ§ˆμ§€λ§‰μ— λ¬Όκ³ κΈ° λ°©ν–₯을 λ°”κΏ”μ€Œ)
              $fish.attr("src", "fish2.png");
            });
            flag = false;
          } else {
            $fish.attr("src", "fish2.png");
            $fish.animate({
              left: "50px"
            }, 1000, function(){
              $fish.attr("src", "fish1.png");
            });
            flag = true;
          }
        });
        
      })

    </script>

  </head>

<body>
  <div id="panel">
    <div id="bar"></div>
    <img src="fish1.png" id="fish">
  </div>

  <div id="nav">
    <button id="btnStart">
      λ¬Όκ³ κΈ° 움직이기
    </button>
  </div>
</body>

</html>

πŸ”½μ‹€ν–‰ κ²°κ³Ό

profile
Have a good day βŒ―β€™β–Ύβ€™βŒ―

0개의 λŒ“κΈ€