jQuery를 사용하여 탭 기능을 구현
jQuery 사용하여 탭 기능을 구현하는 스크립트.
전체 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
const tabButn = $(".title ul li");
const tabCont = $(".cont > div");
tabCont.hide().eq(0).show();
tabButn.click(function (e) {
e.preventDefault
const index = $(this).index();
$(this).addClass("active").siblings().removeClass("active")
tabCont.eq(index).show().siblings().hide()
})
전체적인 구조
- 사용자가 탭 버튼 중 하나를 클릭하면, 해당 탭에 맞는 내용이 보이고 나머지 탭 내용은 숨겨지는 기능을 수행합니다. 사용자가 탭 버튼을 클릭하면, 해당 버튼에 active 클래스가 추가되고, 나머지 버튼에서는 제거됩니다. 동시에 해당 탭 버튼에 매칭되는 내용만 보이고, 나머지 탭 내용은 숨겨집니다.
코드 분석
jQuery 선택자를 사용
1
let currentIndex = 0;
- 이 줄은 jQuery 선택자를 사용하여 HTML 문서 내에서 클래스 이름이 title 인 요소 내의 ul 요소의 모든 li 요소를 선택합니다. 이들은 탭 버튼으로 사용됩니다. tabButn 변수에 이 요소들의 참조가 저장됩니다.
클래스 이름이 cont인 요소의 직계 자식인 모든 div 요소를 선택
1
const tabCont = $(".cont > div");
- 이들은 각 탭 버튼에 해당하는 내용을 담고 있습니다. tabCont 변수에 이 요소들의 참조가 저장됩니다.
메소드들의 역활
1
tabCont.hide().eq(0).show();
hide() 메소드를 사용하여 모든 탭 내용을 숨깁니다.
eq(0) 메소드는 선택된 요소들 중 첫 번째 요소 (인덱스 0)를 선택합니다. 즉, 첫 번째 탭 내용을 선택합니다.
show() 메소드를 사용하여 첫 번째 탭 내용만 보이게 합니다.
클릭 이벤트 리스너를 추가
1
2
tabButn.click(function (e) {
e.preventDefault})
click() 메소드를 사용하여 tabButn (탭 버튼)에 클릭 이벤트 리스너를 추가합니다. 버튼을 클릭하면 익명 함수가 실행됩니다.
e.preventDefault 는 이벤트의 기본 동작을 취소합니다. 여기서는 a 태그의 기본 동작인 페이지 이동을 막기 위해 사용됩니다. 하지만, e.preventDefault 뒤에 괄호 ()를 붙여야 올바르게 작동합니다.
탭 버튼의 인덱스를 반환
1
const index = $(this).index();
- $(this).index() 는 현재 클릭된 탭 버튼의 인덱스를 반환합니다. 이 인덱스는 tabCont에서 해당 내용을 선택하는 데 사용됩니다.
메소드를 사용하여 현재 클릭된 탭 버튼의 클래스 변경
1
$(this).addClass("active").siblings().removeClass("active")
addClass(“active”) 메소드를 사용하여 현재 클릭된 탭 버튼에 active 클래스를 추가합니다. 이를 통해 활성화된 탭 버튼을 시각적으로 구분할 수 있습니다.
siblings().removeClass(“active”) 는 현재 탭 버튼을 제외한 모든 형제 탭 버튼에서 active 클래스를 제거합니다.
메소드를 사용하여 탭 내용 숨기고 나타내기.
1
tabCont.eq(index).show().siblings().hide()
eq(index) 메소드를 사용하여 index 에 해당하는 탭 내용을 선택합니다.
show() 메소드를 사용하여 해당 탭 내용을 보이게 합니다.
siblings().hide() 메소드를 사용하여 선택된 탭 내용을 제외한 모든 형제 탭 내용을 숨깁니다.
메소드를 사용해여
1
let nextIndex = (currentIndex + 1) % 3
- nextIndex 는 다음에 보여줄 이미지의 인덱스를 계산합니다. (currentIndex + 1) % 3 연산을 통해, 인덱스가 0, 1, 2 순으로 순환 하게 됩니다. % 3은 인덱스가 2를 초과하지 않도록 합니다 (이미지가 총 3개라고 가정).
현재 이미지 숨기기
1
$(".slider").eq(currentIndex).fadeOut(1000)
- $(“.slider”).eq(currentIndex) 는 클래스 이름이 slider 인 요소 중에서 currentIndex 에 해당하는 요소를 선택합니다. .fadeOut(1000) 메서드는 해당 요소를 1초 동안 서서히 숨깁니다.
다음 이미지 보이기
1
$(".slider").eq(nextIndex).fadeIn(1000)
- $(“.slider”).eq(nextIndex) 는 다음에 보여줄 이미지를 선택합니다. .fadeIn(1000) 메서드는 해당 요소를 1초 동안 서서히 나타나게 합니다.
인덱스 업데이트
1
currentIndex = nextIndex
- currentIndex 변수를 nextIndex 로 업데이트하여, 다음 반복 때 현재 이미지로 사용됩니다.
setInterval 및 준비 핸들러 닫기
1
setInterval(() => {}, 1000)
- setInterval 의 두 번째 인자로 1000을 전달하여, 반복적인 함수 호출 간격을 1초로 설정합니다. 그리고 jQuery의 준비 핸들러를 닫습니다.
This post is licensed under CC BY 4.0 by the author.