테스트 사이트 - 개발 중인 베타 버전입니다

tab 안에 tab넣기!! 채택완료

nanati 7년 전 조회 8,118

만들고 싶은 형태는 아래와 같습니다.

잘 표현이 되었는지 모르겠네요...

아무튼 연도별 탭 안에 월별 탭이 또 들어있는건데요!! ...

제가 연도별 탭은 아래와 같이 만들었습니다.

 

</p>

<p><div id="tabs"></p>

<p><ul id="tab"></p>

<p><li>2014</li></p>

<p><li>2015</li></p>

<p><li>2016</li></p>

<p><li class="active">2017</li></p>

<p></div></p>

<p> </p>

<p><div class="tabContent">

<div class="tabContentInner">

<p>2014예이!</p>

</div>

</div></p>

<p><div class="tabContent">

<div class="tabContentInner">

<p>2015예이!</p>

</div>

</div></p>

<p><div class="tabContent">

<div class="tabContentInner">

<p>2016예이!</p>

</div>

</div></p>

<p><div class="tabContent active">

<div class="tabContentInner">

<p>2017예이!</p>

</div>

</div></p>

<p>

 

</p>

<p>.tabContent {</p>

<p>display: none;</p>

<p>}</p>

<p>.active {</p>

<p>display: block;</p>

<p>

 

</p>

<p>// tab menu

    $(".tab li").click(function () {

        var num = $(".tab li").index(this);

        $(".tabContent").removeClass('active');

        $(".tabContent").eq(num).addClass('active');

        $(".tab li").removeClass('active');

        $(this).addClass('active')

    });</p>

<p>

 

그런데 위와 같은 내용을 그대로 .tabContent 안에다가 넣고 

.tab2, .tabContent2 라고 지정한 후 js를 

 

</p>

<p>// tab in tab

    $(".tab2 li").click(function () {

        var num = $(".tab2 li").index(this);

        $(".tabContent2").removeClass('active');

        $(".tabContent2").eq(num).addClass('active');

        $(".tab2 li").removeClass('active');

        $(this).addClass('active')

    });</p>

<p>

 

이렇게 썼는데 ... 이것만으로는 실행이 안되는걸까요?

제가 뭐 잘 못 쓴 부분이 있는걸까요? ㅠ ㅠ

탭 안에 탭 넣는거 만들어야 하는데 어렵네요...

알려주시면 감사하겠습니다~~~

 

 

 

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 7개

채택된 답변
+20 포인트
7년 전

https://jsfiddle.net/dckLmkgy/">https://jsfiddle.net/dckLmkgy/

 

css 코드 위치때문입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

n
nanati
7년 전
감사합니다!!! ~ ㅎㅎ
아무래도 많은 탭을 한번에 구현하기에는
힘들 것 같아 프로그래머에게 맡기려고 합니다 ㅎㅎ
근데 제가 하고 싶은대로 구현이 되었...네욥~

댓글을 작성하려면 로그인이 필요합니다.

음.. .active 스타일에 !important 를 줘보실래요?

본문에 올려준 기준으로 작성하였습니다 : )

 

https://codepen.io/revirthuum/pen/XzxYWM

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

엔피씨✨
7년 전
active 클래스가 네스트기능으로 동작하기 때문에 어느 위치에서 눌렀느냐를 우선순위로 두도록 합니다 : )
n
nanati
7년 전
스크립트 코드가 잘못되었을까 싶었는데
문제가 css문제였어요 ㅠ ㅠ...
일단 원하는대로 해결은 했습니다!! 감사합니다~~

댓글을 작성하려면 로그인이 필요합니다.

플래토
7년 전

우선알려주신 codepen에서

 

</p>

<p> <div class="tabContent active">

            <div class="tabContentInner">

              <div class="monthly">

                <ul class="tab2">

                  <li><span>4月</span></li>

                  <li><span>5月</span></li>

                  <li><span>6月</span></li>

                  <li><span>7月</span></li>

                  <li><span>8月</span></li>

                  <li><span>9月</span></li>

                  <li><span>10月</span></li>

                  <li class="active"><span>11月</span></li>

                  <li><span>12月</span></li>

                  <li><span>1月</span></li>

                  <li><span>2月</span></li>

                  <li><span>3月</span></li>

                </ul></p>

<p>
에서

 

tabContent

를 제거하세요

</p>

<p> <div class=" active">

            <div class="tabContentInner">

              <div class="monthly">

                <ul class="tab2">

                  <li><span>4月</span></li>

                  <li><span>5月</span></li>

                  <li><span>6月</span></li>

                  <li><span>7月</span></li>

                  <li><span>8月</span></li>

                  <li><span>9月</span></li>

                  <li><span>10月</span></li>

                  <li class="active"><span>11月</span></li>

                  <li><span>12月</span></li>

                  <li><span>1月</span></li>

                  <li><span>2月</span></li>

                  <li><span>3月</span></li>

                </ul></p>

<p>

 

각 월마다 다른 일자를 표기하셔야 하는거라면

 

PHP의 loop나 표기방식을 이용해서 로딩시 불러와서 다 가지고 있던지

 

클릭시 

ajax를 통해서 server(db정보)를 통해서 불러오셔서 월별 세팅값을 변경하시던지

하셔야합ㄴ디ㅏ.

 

순수 디자인과 스크립트로 구현하시려면

페이지 로딩시에 전체를 다 들고있는게 간편합니다.

단 로딩이 무거워질수잇습니다.

 

연도별 셋팅같이

전부다 같은 패턴으로 접근하는겁니다.

연도는 tabConent 로 하셨으면

월별(1~12)는

tabContent2 와 같은 방식으로 하시던지 하셔서 

 

보이는영역을 감싸셔야죠

 

[2014] [2015][2016][2017]

|  #2014                                       

|  (1) (2) .........(11)(12) 

|

| #2015

|  (1) (2) .........(11)(12) 

|

| #2016

|  (1) (2) .........(11)(12) 

|

| #2017 active

|  (1) (2) .........(11 active )(12) 

 

의 패턴으로요

 

설명이 이해가 되실런지.......

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

n
nanati
7년 전
감사합니다.
설명 잘 읽었구요.. 이 부분은 프로그래머에게 맡기는 것이 낫겠다는
결론이 나고 그러네요 ㅠ ㅠ ㅋㅋㅋ
제가 해결할 수 있는 문제가 아니군요~~

댓글을 작성하려면 로그인이 필요합니다.

월별탭은 연도별 탭 마다 있는것인가요!

즉 탭이 4개면 div 12개월 * 4개 ?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

n
nanati
7년 전
네... ㅠ ㅠ 각 연도별로 12개월의 탭이 있어요..-_ - 복잡스럽네요...

댓글을 작성하려면 로그인이 필요합니다.

7년 전

 

 

$(".tab li").click(function () { ==> $("#tab li").click(function () {  <-- 수정.

 

    <-- id값입니다. 그리고 해당 ul 닫아주세요.

 

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

n
nanati
7년 전
답변 감사합니다.
제가 질문글을 쓸 때 코드를 막 잘못 썼네요 ㅠ ㅠ ..
원본에는 잘 닫혀있고...
질문하고자 하는 내용은 탭 안에 탭을 넣는 방법이었습니다 ㅠ ㅠ
제 질문이 좀 이상했능가보네요...
n
nanati
7년 전
https://codepen.io/nanati/pen/KyGeBW

여기 필요한 내용만 넣어봤어요!!

댓글을 작성하려면 로그인이 필요합니다.

플래토
7년 전

http://deb.kr/test/tabintab.php" href="http://deb.kr/test/tabintab.php">http://deb.kr/test/tabintab.php

로 만들어봤는데요

</p>

<p><!DOCTYPE html>

<html>

<head>

<title>Tab inside tab</title>

<meta charset="utf-8">

<script src="<a href="http://code.jquery.com/jquery-2.2.3.min.js"></script>" target="_blank" rel="noopener noreferrer">http://code.jquery.com/jquery-2.2.3.min.js"></script></a></p>

<p><style>

li {list-style:none;text-decoration:none;float:left;border:1px solid #777; background-color:#EEE;cursor:pointer;

padding:10px;}

.tabContent {border:1px solid #333;

    position:absolute;

    top:60px;left:40px;width:300px;height:300px;

    display: none;

    padding:20px;

}

.active {

    background-color:#AEA;

    display: block;

}

.num1 {

    background-color:#44A;

}

.num2 {

    background-color:#B3A;

}

.num3 {

    background-color:#AAE;

}

.num4 {

    background-color:#AEE;

}

</style>

<body>

<script>

// tab menu

$(function() {

    $("#tab li").click(function () {

        

        var num = $("#tab li").index(this);

        $(".tabContent").removeClass('active');

        $(".tabContent").eq(num).addClass('active');

        $(".tabContent").eq(num).addClass('num'+num);

        $("#tab li").removeClass('active');

        $(this).addClass('active')

    });

    // tab in tab

    $(".tab2 li").click(function () {

        var num = $(".tab2 li").index(this);

        $(".tabContent2").removeClass('active');

        $(".tabContent2").eq(num).addClass('active');

        $(".tab2 li").removeClass('active');

        $(this).addClass('active')

    });

});

</script></p>

<p><div id="tabs">

    <ul id="tab">

        <li>2014</li>

        <li>2015</li>

        <li>2016</li>

        <li class="active">2017</li>

    </ul>

</div>

 

<div class="tabContent">

    <div class="tabContentInner">

    <p>2014예이!</p>

    </div>

</div>

<div class="tabContent">

    <div class="tabContentInner">

    <p>2015예이!</p>

    </div>

</div>

<div class="tabContent">

    <div class="tabContentInner">

    <p>2016예이!</p>

    </div>

</div>

<div class="tabContent active">

    <div class="tabContentInner">

    <p>2017예이!</p>

    </div>

</div></p>

<p></body>

</html></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

플래토
7년 전
닫혀있고 안닫혀있고보다

class를 호출하는 jquery 를 사용하셨는데
실제로는 id 명입니다.
그래서,
#tab 으로 하셔야 작동하죠
n
nanati
7년 전
답변 감사합니다~
이미 상위 탭은 작동이 가능한 상태구용 ㅠㅠ...
(제가 질문 글 쓸때 코드를 잘못썼네요 죄송해요~ 원본은 class입니다 ㅠ)
탭 안에 탭을 넣는 방법이 궁금합니다~~
n
nanati
7년 전
https://codepen.io/nanati/pen/KyGeBW

여기 필요한 내용만 넣어봤어요!!

댓글을 작성하려면 로그인이 필요합니다.

아 소스 코드 확인해보려고 코드펜에 붙여 넣었는데 뭔가 잘못넣었는지 실행이 안되는군요!

기본 제이쿼리만 넣어보고 확인하면되나요?ㅋㅋ

 

https://codepen.io/revirthuum/pen/XzxYWM" href="https://codepen.io/revirthuum/pen/XzxYWM">https://codepen.io/revirthuum/pen/XzxYWM

 

 

(이와중에 ul이 안닫혀있어요!)

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

n
nanati
7년 전
아 ㅋㅋㅋ 게시판에서 쓴거라 빼먹었나보네요 ㅋㅋ
원본엔 잘 닫혀있습니다 홍홍홍...
n
nanati
7년 전
https://codepen.io/nanati/pen/KyGeBW

여기 필요한 내용만 넣어봤어요!!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인