자바스크립트 질문이 있습니다. 채택완료
한번잘해보자
8개월 전
조회 3,067
</p>
<p><div class="section"></p>
<p> <div class="inner"></p>
<p> <ul class="type_btn_wrap"></p>
<p> <li class="btn01 active"></p>
<p> 1</p>
<p> </li></p>
<p> <li class="btn02"></p>
<p> 2</p>
<p> </li></p>
<p> <li class="btn03"></p>
<p> 3</p>
<p> </li></p>
<p> <li class="btn04"></p>
<p> 4</p>
<p> </li></p>
<p> <li class="btn05"></p>
<p> 5</p>
<p> </li></p>
<p> <li class="btn06"></p>
<p> 6</p>
<p> </li></p>
<p> </ul></p>
<p> <div class="type_wrap type01 active">1</div></p>
<p> <div class="type_wrap type02">2</div></p>
<p> <div class="type_wrap type03">3</div></p>
<p> <div class="type_wrap type04">4</div></p>
<p> <div class="type_wrap type05">5</div></p>
<p> <div class="type_wrap type06">6</div></p>
<p> </div></p>
<p></div></p>
<p>
버튼 클릭시 하단 컨텐츠가 바뀌는 방식인데
자바스크립트를 쌩 노가다 처럼 입력하고 있는데 혹시 간편한 방법이 없나 궁금해서 질문드립니다.
현재는 아래와 같이 작업을 하고 있습니다
</p>
<p> </p>
<p>$(function(){</p>
<p> $(".type_btn_wrap .btn01").click(function(){</p>
<p> $(".type_btn_wrap .btn01").addClass("active");</p>
<p> $(".type_btn_wrap .btn02").removeClass("active");</p>
<p> $(".type_btn_wrap .btn03").removeClass("active");</p>
<p> $(".type_btn_wrap .btn04").removeClass("active");</p>
<p> $(".type_btn_wrap .btn05").removeClass("active");</p>
<p> $(".type_btn_wrap .btn06").removeClass("active");</p>
<p> $(".type_wrap .type01").addClass("active");</p>
<p> $(".type_wrap .type02").removeClass("active");</p>
<p> $(".type_wrap .type03").removeClass("active");</p>
<p> $(".type_wrap .type04").removeClass("active");</p>
<p> $(".type_wrap .type05").removeClass("active");</p>
<p> $(".type_wrap .type06").removeClass("active");</p>
<p> </p>
<p> });</p>
<p>});</p>
<p> </p>
<p>$(function(){</p>
<p> $(".type_btn_wrap .btn02").click(function(){</p>
<p> $(".type_btn_wrap .btn02").addClass("active");</p>
<p> $(".type_btn_wrap .btn01").removeClass("active");</p>
<p> $(".type_btn_wrap .btn03").removeClass("active");</p>
<p> $(".type_btn_wrap .btn04").removeClass("active");</p>
<p> $(".type_btn_wrap .btn05").removeClass("active");</p>
<p> $(".type_btn_wrap .btn06").removeClass("active");</p>
<p> $(".type_wrap .type02").addClass("active");</p>
<p> $(".type_wrap .type01").removeClass("active");</p>
<p> $(".type_wrap .type03").removeClass("active");</p>
<p> $(".type_wrap .type04").removeClass("active");</p>
<p> $(".type_wrap .type05").removeClass("active");</p>
<p> $(".type_wrap .type06").removeClass("active");</p>
<p> });</p>
<p>});</p>
<p> </p>
<p>.</p>
<p>.</p>
<p>.</p>
<p>.</p>
<p>.6번 까지 반복...</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
8개월 전
현재 구현 방식은 각 버튼마다 별도의 클릭 이벤트를 등록해 클래스 토글을 수행하고 있어
코드의 중복이 많고 유지보수 측면에서 비효율적입니다.
이를 개선한, 버튼과 콘텐츠를 인덱스 기반으로 접근하는 방법이 있습니다.
</p>
<p>$(function(){
$('.type_btn_wrap li').click(function(){
var index = $(this).index(); // 클릭한 버튼의 인덱스 가져오기</p>
<p> // 모든 버튼과 콘텐츠에서 active 클래스 제거
$('.type_btn_wrap li').removeClass('active');
$('.type_wrap').removeClass('active');</p>
<p> // 해당 버튼과 콘텐츠에 active 클래스 추가
$(this).addClass('active');
$('.type_wrap').eq(index).addClass('active');
});
});</p>
<p>
코드 변경 없이 자동으로 대응할 수 있어 유지보수와 가독성이 크게 향상됩니다.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 2개
�
한번잘해보자
8개월 전
너무너무 감사합니다 예시 소스 가지고 공부해보겠습니다!
g
glitter0gim
8개월 전
저도 한 수 배워갑니다. (●'◡'●)
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인