Published: 27 Apr 2020 › Updated: 27 Apr 2020![[개발] 선택을 통한 UL/LI 목록 재 정렬 with jquery](https://i.ecency.com/p/C3TZR1g81UNaPs7vzNXHueW5ZM76DSHWEY7onmfLxcK2iQS9Cfz4sy2v6m8ZKw5XscXG6u7bv9Yo2RoZJHhJ3e8mBNfvVYk5eTUnz5QbZutexxk7PTnQd1p?format=match&mode=fit&height=377)
[개발] 선택을 통한 UL/LI 목록 재 정렬 with jquery
학습목표
항목을 선택을 통해 목록을 고정 / 재정렬 할 수 있도록 한다.
결과물
클릭한 대상이 고정형을 제외하고 맨 위로 올라가게 된다. 단 처음 정렬 순서는 유지한다. 필요에 따라 연산 수치를 변동 시켜 유연하게 해당 값 또한 바꿔 줄 수 있다.
[그림] 선택을 통해 재 정렬 처리
소스코드
<!DOCTYPE html>
<html>
<head>
<title>REORDER LIST ELEMENTS with jquery</title>
<script type="text/javascript" src="./jquery-1.12.4.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body{
}
ul {
list-style-type: none;
background-color: black;
color: white;
}
li.selected::before {
color: yellow;
content: "★";
}
li.data-fixed::before {
color: red;
content: "♥";
}
</style>
</head>
<body>
<ul id="t1">
<li data-base="99999" data-point="0" class="data-fixed">00번 고정형</li>
<li data-base="10" data-point="0">01번 아이템</li>
<li data-base="9" data-point="0">02번 아이템</li>
<li data-base="8" data-point="0">03번 아이템</li>
<li data-base="7" data-point="0">04번 아이템</li>
<li data-base="6" data-point="0">05번 아이템</li>
<li data-base="5" data-point="0">06번 아이템</li>
<li data-base="4" data-point="0">07번 아이템</li>
<li data-base="3" data-point="0">08번 아이템</li>
<li data-base="2" data-point="0">09번 아이템</li>
<li data-base="1" data-point="0">10번 아이템</li>
</ul>
<script type="text/javascript">
var SELECTED_POINT = 100;
// 대상 UL 의 목록 정보를 재정렬
function reorder_list(target){
var children = target.children("li");
// 목록 정보를 분리 후 정렬
children.detach().sort(function(v1,v2){
let _v1 = $(v1).data("base") + $(v1).data("point");
let _v2 = $(v2).data("base") + $(v2).data("point");
return _v2 - _v1;
});
target.append(children);
}
// li 클릭 시 즐겨 찾기 정보를 toggle 처리
$("li").click(function(){
// 고정형 대상은 변경 처리를 안함 (단 base 의 값을 매우 큰 수로 셋팅)
if($(this).hasClass("data-fixed")){
return;
}
// 즐겨찾기 선택 값을 토글 처리
$(this).data("point", $(this).data("point")==0?SELECTED_POINT:0 );
if($(this).data("point")==SELECTED_POINT){
$(this).addClass("selected");
}else{
$(this).removeClass("selected");
}
// 대상 UL 의 목록 정보를 재정렬
reorder_list($(this).parent()) ;
});
</script>
</body>
</html>
맺음말
UL 항목을 detach (때어낸 ) 이후 sort (정렬) 를 통해 원하는 항목으로 재 정렬 해주는 것이 키 포인트라 생각한다.
Leave [개발] 선택을 통한 UL/LI 목록 재 정렬 with jquery to:
Read more #jquery posts
Best Posts From wonsama
We have not curated any of wonsama's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From wonsama
- 오랜만의 하이브 포스팅 입니다.
- [게임] splinterlands - 카오스 레기온팩 판매정보
- test
- [잡설] 샤크트론 LV4/9
- [잡설] 토큰 이야기 거래량 TOP10
- [잡설] 샤크트론 가즈앙~
- [트론] 샤크 - 샤크 다이스
- [잡설] 붉은 물결 ~ 오르즈앗~
- [잡설] 이제다시 상승?
- [잡설] 리퍼리움 ... 1000% 실화 ㄷ
- [드디어] 데이터 동기화가 완료 되었네요 휴...
- [잡설] 퇴근길
- [개털풀] 9월분 배분
- [잡설] 구글에서 검색하다 우연하게 본 3년 전 글
- [트론] SSK - 썬 스테이크 네트워크
- [잡설] 연휴 마지막 날이 ...
- [잡설] 트럼프 코로나 걸려서 ... 대공황 흠...
- [잡설] 추석 잘 보내세요
- [잡설] 라이언방향제
- [잡설] 추석 연휴네요