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

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


     

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€