๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
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() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ๋‹ค๋ฅธ ์œ„์น˜๋กœ ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์†์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ ๊ฐ ํ•ญ๋ชฉ์„ ์‹๋ณ„ํ•˜๊ณ  ์ •๋ ฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!


 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€