λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
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() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μš”μ†Œλ₯Ό λ‹€λ₯Έ μœ„μΉ˜λ‘œ μ΄λ™μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 데이터 속성을 ν™œμš©ν•˜μ—¬ 각 ν•­λͺ©μ„ μ‹λ³„ν•˜κ³  μ •λ ¬ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

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


     

    λ°˜μ‘ν˜•

    λŒ“κΈ€