티스토리 뷰
WebPublisher/JavaScript & jQuery
[javaScript] select box 여러개 만들기 (data set 사용)
amanda 2025. 6. 27. 11:42자바스크립트로 셀렉트박스 만들기
여러개 만들어 공통 소스 사용하고 클래스와 data 값으로 구분
<!-- s: select box -->
<div class="ui_select_box">
<button class="label">ㅇㅇㅇ님</button>
<ul class="select_list">
<li><button type="button" class="select_item">select1</button></li>
<li><button type="button" class="select_item">select2</button></li>
</ul>
</div>
<!-- // e: select box -->
<!-- s: select box type2 -->
<div class="ui_select_box type2">
<button class="label">Default</button>
<ul id="optionSelect" class="select_list">
<li><button type="button" class="select_item" data-class="select_code_A">selectA</button></li>
<li><button type="button" class="select_item" data-class="select_code_B">selectB</button></li>
<li><button type="button" class="select_item" data-class="select_code_C">selectC</button></li>
</ul>
</div>
<!-- // e: select box type2 -->
let orderBrand = null;
function initSelectLabel(){
const label = document.querySelectorAll('.label');
label.forEach(function(e){
lb.addEventListener('click', e => {
let selectList = lb.nextElementSibling;
let selectItems = selectList.querySelectorAll('.select_list button');
clickLabel(lb, selectItems);
})
});
const clickLabel = (lb, selectItems) => {
const selectBox = lb.closest('.ui_select_box');
if(lb.parentNode.classList.contains('active')) {
lb.parentNode.classList.remove('active');
selectItems.forEach((opt) => {
opt.removeEventListener('click', () => handleSelect(lb, opt));
});
} else {
lb.parentNode.classList.add('active');
selectItems.forEach((opt) => {
opt.addEventListener('click', () => {
// select box에서 선택한 항목만 체크 표시
const buttonsInSameBox = selectBox.querySelectorAll('.select_list button');
buttonsInSameBox.forEach((btn) => btn.classList.remove('select'));
opt.classList.add('select');
// value 속성이 있으면 type2 선택 select box → 선택한 type2 코드를 세팅
if($(opt).attr('value') !== undefined){
orderBrand = $(opt).attr('value');
}
handleSelect(lb, opt)
})
})
}
}
const handleSelect = (label, item) => {
if(label.parentNode.classList.contains('type2')){
label.innerHTML = item.textContent;
}
label.parentNode.classList.remove('active');
}
}
'WebPublisher > JavaScript & jQuery' 카테고리의 다른 글
| [swiper] grid layout 스와이퍼로 2x2 그리드 레이아웃 만들기 (0) | 2025.08.05 |
|---|---|
| [javaScript] 자바스크립트로 탭 구현 (2) | 2025.08.04 |
| [javaScript] data set 활용해 jquery 없이 탭메뉴 만들기 (0) | 2025.06.23 |
| [swiper] grid 레이아웃 스와이퍼 (0) | 2025.06.19 |
| [lottie] lottie 라이브러리 활용해 data-type별로 다른 lottie 애니메이션 적용하기 (0) | 2025.06.08 |
공지사항
