λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Lect & Tip/javascript, jQuery

jquery .sort() μš”μ†Œ μ΄λ™ν•˜λ©΄μ„œ 제이쿼리 μ†ŒνŠΈ μ •λ ¬ν•˜κΈ°

by 낯선곡간2019 2020. 1. 13.
λ°˜μ‘ν˜•

✈ jquery .sort()λ₯Ό ν™œμš©ν•œ μš”μ†Œ 이동과 μ†ŒνŠΈ μ •λ ¬

μ•ˆλ…•ν•˜μ„Έμš”! 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” jQuery의 .sort() ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ μš”μ†Œλ₯Ό μ΄λ™ν•˜κ³  λ™μ‹œμ— μ†ŒνŠΈ μ •λ ¬ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 이 κΈ°μˆ μ€ λΆ€μ„œλ‚˜ 트리ꡬ쑰의 λͺ©λ‘μ—μ„œ ν•­λͺ©μ„ λ‹€λ₯Έ μœ„μΉ˜λ‘œ μ΄λ™ν•˜λ©΄μ„œ 정렬을 μœ μ§€ν•˜κ³ μž ν•  λ•Œ μœ μš©ν•˜κ²Œ ν™œμš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. 이해λ₯Ό 돕기 μœ„ν•΄ κ°„λ‹¨ν•œ μ˜ˆμ‹œμ™€ ν•¨κ»˜ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ: λΆ€μ„œ 이동과 μ†ŒνŠΈ μ •λ ¬

μ œμ‹œλœ μ˜ˆμ‹œμ—μ„œλŠ” 'λΆ€μ„œλͺ©λ‘'κ³Ό 'μ„ νƒλœ λΆ€μ„œ'λΌλŠ” 두 개의 그룹이 μžˆμŠ΅λ‹ˆλ‹€. 이 그룹듀은 ULκ³Ό LI μš”μ†Œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 각 λΆ€μ„œλŠ” 데이터 속성 data-sidλ₯Ό 톡해 μ‹λ³„λ©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ 'λΆ€μ„œλͺ©λ‘'의 λΆ€μ„œλ₯Ό μ„ νƒν•˜λ©΄ ν•΄λ‹Ή λΆ€μ„œκ°€ 'μ„ νƒλœ λΆ€μ„œ'둜 μ΄λ™ν•˜κ²Œ 되며, μ΄λ™λœ ν›„μ—λŠ” λΆ€μ„œλ“€μ΄ μˆœμ„œλŒ€λ‘œ μ†ŒνŒ… μ •λ ¬λ©λ‹ˆλ‹€.

μ½”λ“œ μ˜ˆμ‹œ

λ¨Όμ €, HTML μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

<div class="sectionWrap">
  <div class="choiceGroup ">
    <!-- ... -->
    <div class="scrollHere choiceGroup1">
      <ul>
        <!-- λΆ€μ„œ λͺ©λ‘ -->
      </ul>
    </div>
  </div>
  <div class="toRightArr"></div>
  <div class="choiceGroup">
    <!-- ... -->
    <div class="scrollHere choiceGroup2">
      <ul>
        <!-- μ„ νƒλœ λΆ€μ„œ -->
      </ul>
    </div>
  </div>
</div>

그리고 JavaScript μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

$(document).ready(function () {
  $(document).on('click', '.choiceGroup1>ul>li', function () {
    $(this).appendTo('.choiceGroup2>ul');
    sortLi('.choiceGroup2');
  });

  $(document).on('click', '.choiceGroup2>ul>li', function () {
    $(this).appendTo('.choiceGroup1>ul');
    sortLi('.choiceGroup1');
  });

  function sortLi(e) {
    $(e + '>ul>li').sort(function (a, b) {
      return parseInt(a.dataset.sid) - parseInt(b.dataset.sid);
    }).appendTo(e + '>ul');
  }
});

CSS μŠ€νƒ€μΌλ§

CSS μŠ€νƒ€μΌλ§μ€ λ‹€μŒκ³Ό 같이 μ •μ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

/* ... */
.sectionWrap {
  /* ... */
}

.choiceGroup1>ul>li>a {
  /* ... */
}

.choiceGroup2>ul>li>a {
  /* ... */
}

.choiceGroup {
  /* ... */
}

.toRightArr {
  /* ... */
}

κ²°λ‘ 

μ΄λ ‡κ²Œ jQuery의 .sort() ν•¨μˆ˜μ™€ .appendTo() ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ λΆ€μ„œλ₯Ό μ΄λ™ν•˜λ©΄μ„œ μ •λ ¬ν•˜λŠ” 방법을 κ΅¬ν˜„ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 이 μ˜ˆμ‹œλ₯Ό 톡해 λ³΅μž‘ν•œ 데이터 κ΅¬μ‘°μ—μ„œλ„ μ›ν•˜λŠ” ν•­λͺ©μ„ μ„ νƒμ μœΌλ‘œ μ΄λ™ν•˜κ³  λ™μ‹œμ— μ†ŒνŒ… 정렬을 μœ μ§€ν•˜λŠ” 방법을 λ°°μ›Œλ³΄μ•˜μŠ΅λ‹ˆλ‹€. 이 κΈ°μˆ μ„ μ‘μš©ν•˜μ—¬ λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ ν™œμš©ν•΄λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

μ£Όμš” 포인트 μš”μ•½

  • jQuery의 .sort() ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ μš”μ†Œλ₯Ό μ†ŒνŒ… μ •λ ¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • .appendTo() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μš”μ†Œλ₯Ό λ‹€λ₯Έ μœ„μΉ˜λ‘œ μ΄λ™μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 데이터 속성을 ν™œμš©ν•˜μ—¬ 각 ν•­λͺ©μ„ μ‹λ³„ν•˜κ³  μ •λ ¬ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€!


 

λ°˜μ‘ν˜•

λŒ“κΈ€