๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Lect & Tip/javascript, jQuery

jquery .sort() ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ์š”์†Œ ์ด๋™๊ณผ ์ •๋ ฌ

by ๋‚ฏ์„ ๊ณต๊ฐ„2019 2023. 9. 1.

๋ชฉ์ฐจ

    jquery .sort() ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ์š”์†Œ ์ด๋™๊ณผ ์ •๋ ฌ

    ์†Œ๊ฐœ

    ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” jQuery์˜ .sort() ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ด๋™ํ•˜๋ฉด์„œ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ๋ถ€์„œ๋‚˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋ชฉ๋ก์—์„œ ํŠน์ • ์š”์†Œ๋ฅผ ์„ ํƒํ•˜์—ฌ ๋‹ค๋ฅธ ๋ชฉ๋ก์œผ๋กœ ์ด๋™ํ•œ ํ›„, ํ•ด๋‹น ๋ชฉ๋ก์„ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ์ƒํ™ฉ ์„ค์ •

    ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ์—ฌ๋Ÿฌ ๋ถ€์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ชฉ๋ก์ด ์žˆ๊ณ , ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ๋ถ€์„œ๋ฅผ ๋‹ค๋ฅธ ๋ชฉ๋ก์œผ๋กœ ์ด๋™์‹œํ‚จ ํ›„, ๊ทธ ๋ชฉ๋ก์„ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, '๋””์ง€ํ„ธ ๋ฏธ๋””์–ด' ํŒ€๋“ค์˜ ๋ชฉ๋ก์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๋จผ์ € ๋ณต์‚ฌ ์ด๋™์€ ํด๋ฆญ ์ด๋ฒคํŠธ ๋ฐœ์ƒ๊ณผ ๋™์‹œ์— .appendTo() ํ•จ์ˆ˜๋กœ ์ด๋™๋œ๋‹ค.

    ์ด ์˜ˆ์‹œ์—์„œ๋Š” jQuery์˜ .sort() ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ถ€์„œ ์ด๋™๊ณผ ์†ŒํŠธ ์ •๋ ฌ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. '๋ถ€์„œ๋ชฉ๋ก'๊ณผ '์„ ํƒ๋œ ๋ถ€์„œ'๋ผ๋Š” ๋‘ ๊ทธ๋ฃน์„ UL๊ณผ LI ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์†์„ฑ data-sid๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ ๋ถ€์„œ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” '๋ถ€์„œ๋ชฉ๋ก'์—์„œ ์›ํ•˜๋Š” ๋ถ€์„œ๋ฅผ ์„ ํƒํ•˜๋ฉด ํ•ด๋‹น ๋ถ€์„œ๊ฐ€ '์„ ํƒ๋œ ๋ถ€์„œ'๋กœ ์ด๋™ํ•˜๋ฉฐ, ์ดํ›„์—๋Š” ์„ ํƒ๋œ ๋ถ€์„œ๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ์†ŒํŠธ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.

    HTML ๊ตฌ์กฐ

    ์•„๋ž˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฃฐ HTML ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

    <div class="sectionWrap">
      <div class="choiceGroup ">
        <h6>๋ถ€์„œ๋ชฉ๋ก</h6>
        <div class="scrollHere choiceGroup1">
          <ul>
            <!-- ๋ถ€์„œ ๋ชฉ๋ก์ด ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค -->
          </ul>
        </div>
      </div>
      <div class="toRightArr"></div>
      <div class="choiceGroup">
        <h6>์„ ํƒ๋œ ๋ถ€์„œ</h6>
        <div class="scrollHere choiceGroup2">
          <ul>
            <!-- ์„ ํƒ๋œ ๋ถ€์„œ ๋ชฉ๋ก์ด ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค -->
          </ul>
        </div>
      </div>
    </div>

    jQuery ์Šคํฌ๋ฆฝํŠธ

    $(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');
      }
    });

    ์Šคํƒ€์ผ๋ง

    /* ์Šคํƒ€์ผ๋ง ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค */

    ์š”์•ฝ

    ์ด๋ ‡๊ฒŒ jQuery์˜ .sort() ํ•จ์ˆ˜์™€ .appendTo() ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ถ€์„œ๋‚˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋ชฉ๋ก์—์„œ ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‹ค๋ฅธ ๋ชฉ๋ก์œผ๋กœ ์ด๋™ํ•œ ํ›„ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ด๋“œ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์š”์†Œ๋“ค์„ ์›ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ฃผ์˜์‚ฌํ•ญ

    • ์ด ์˜ˆ์ œ๋Š” jQuery๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋กœ, ์‹ค์ œ ํ™˜๊ฒฝ์—์„œ๋Š” ๋” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • CSS ์Šคํƒ€์ผ๋ง ๋ถ€๋ถ„์€ ์ƒ๋žต๋˜์—ˆ์œผ๋‹ˆ, ์›ํ•˜๋Š” ๋””์ž์ธ์— ๋งž๊ฒŒ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ํฌ์ŠคํŒ…์ด ๋งˆ๋ฌด๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€