너와 나의 프로그래밍
JQuery - Selectbox 정렬(다중) / 순서바꾸기 본문
HTML SelectBox에서 option객체의 순서를 바꾸는 문제는 정말 단골 질문중 하나다.
실제로 구글에 검색해보니 안나오면 이상할 정도로 많이 나온다.
보통 option을 정렬할 때 Selectbox 안 한 개의 option을 선택해서 위, 아래로 위치를 변경하는 기능을 많이 사용하나,
이번에는 option들의 객체가 많고, 다중 선택해서 option들의 위치(위, 아래)를 바꾸고 싶었다.
이 함수를 적용하기 전에 select객체에 'multiple' 속성을 넣는것을 잊지 말자.
https://www.w3schools.com/tags/att_select_multiple.asp
function up(){
var selected = $j('#'+selectboxId+' option:selected'); <----- Selectbox의 객체 + 선택된 option을 구함.
if(selected[0].previousElementSibling == null) return; <----- 선택된 옵션중 가장 첫번째 옵션이 맨 위면 return.
$j(selected).each(function(index, obj){
$j(obj).insertBefore($j(obj).prev());
// 1. insertBefore : 선택된 option의 앞(위치)에 삽입.
// 2. prev : 선택된 option의 이전 요소를 반환
// 결과 : insertBefore자리(위치)에 prev의 반환값이 삽입됨.
});
};
function down(){
var selected = $j('#'+selectboxId+' option:selected'); <----- Selectbox의 객체 + 선택된 option을 구함.
if(selected.last().next().length == 0) return; <----- 선택된 옵션중 가장 마지막 옵션이 맨 아래면 return.
$j(selected.get().reverse()).each(function(index, obj){ <----- 선택된 옵션을 reverse함.(선택된 순서를 거꾸로 함.)
$j(obj).insertAfter($j(obj).next());
// 1. insertAfter : 선택된 option의 뒤(위치)에 삽입.
// 2. next : 선택된 option의 다음 요소를 반환
// 결과 : insertAfter 자리(위치)에 next의 반환값이 삽입됨.
});
};
참고자료. insertAfter :
http://api.jquery.com/insertafter/
insertBefore : http://api.jquery.com/insertBefore/
prev : http://api.jquery.com/prev/
next : http://api.jquery.com/next/
get(reverse) : https://api.jquery.com/get/
'Front-End > JQuery' 카테고리의 다른 글
[JQuery] 동적으로 생성된 Textarea에 자동 높이 이벤트 바인딩 (0) | 2019.05.31 |
---|---|
JQuery - IE에서 css: 'background-position-x' 값 못받아 올 때 (0) | 2019.01.24 |
JQuery - 버튼 하나로 늘이고 줄이는 애니메이션 구현하기. (0) | 2018.01.26 |
JQuery - Ajax 기본 문법 (0) | 2017.10.30 |
JQuery - JQuery 기본문법 (12) | 2017.10.21 |