2014-07-15 1 views
-4

안녕하세요 확장 가능한 탭에 더하기 및 빼기 아이콘을 추가하고 싶습니다. 이것은 내가 무엇을 가지고 내가 탭을 클릭 인 경우 아이콘을 대체하기 위해 CSS 나 자바 스크립트를 사용하여 생각하지만 난 어떻게내 메뉴 탭에 + 및 -를 추가하는 방법

대해 이동하는 아무 생각이 지금까지 HTML

<h1>Responsive Tabs</h1> 

<div class="tabBox"> 
<ul class="tabs"> 
    <li><a href="#tab1">Test1</a> 
    </li> 
    <li><a href="#tab2">Test2</a> 
    </li> 
    <li><a href="#tab3">Test3</a> 
    </li> 
</ul> 
<div class="tabContainer"> <a onclick="toggle('tab1');" href="#tab1">Test1</a> 
    <div id="tab1" class="tabContent" style="display:none;">Test1</div> 
<a onclick="toggle('tab2');" href="#tab2">Test2</a> 

    <div id="tab2" class="tabContent" style="display:none;">Test2</div> 
<a onclick="toggle('tab3');" href="#tab3">Test3</a> 

    <div id="tab3" class="tabContent" style="display:none;">Test3</div> 
</div> 
</div> 

자바 스크립트

내 jfiddle에있는
 $(".tabContent").hide(); 
$("ul.tabs li:first").addClass("active").show(); 
$(".tabContent:first").show(); 

$("ul.tabs li").click(function() { 
    $("ul.tabs li").removeClass("active"); 
    $(this).addClass("active"); 
    $(".tabContent").hide(); 
    var activeTab = $(this).find("a").attr("href"); 
    $(activeTab).fadeIn(); 
    return false; 
    }); 

    function toggle(target) { 

    var artz = document.getElementsByClassName('tabContent'); 
    var targ = document.getElementById(target); 
    var isVis = targ.style.display == 'block'; 

    // hide all 
    for (var i = 0; i < artz.length; i++) { 
     artz[i].style.display = 'none'; 
    } 
    // toggle current 
    targ.style.display = isVis ? 'none' : 'block'; 

    return false; 
    } 

나머지 : http://jsfiddle.net/Jnewguy/5B5KJ/63/

답변

1

코드에서 찌르기를 수행하고 간단한 jquery 코드를 추가하여 '+'와 '-'아이콘 사이를 전환하는 방법을 보여줍니다. 이 예에서는 텍스트를 사용했지만 텍스트를 이미지로 바꿀 수 있다는 점에 유의하십시오. 여기

내가 이런 식으로 변경하여있는 TabContainer 링크에서 updated jsfiddle

입니다. 인라인 자바 스크립트 함수 onClick을 사용하는 대신 메인 클래스를 모든 헤더에 제공하여 모든 것을 단순화 할 수 있습니다. 다음으로 사용자 정의 속성을 추가 할 수 있습니다.이 경우 사용자가 표시하려는 탭의 ID를 제공하는 'data-content'를 추가 할 수 있습니다. 링크 태그 안에 'span'태그를 '+'텍스트와 함께 추가했습니다.

<a class="myTabHeader" data-content="tab1" href="#tab1">Test1 <span class="toggle-icon">+</span></a> 

탭을 전환하려면이 jquery 비트를 추가하십시오. 메인 탭 헤더 클래스에 대한 Onclick 이벤트를 만듭니다. 일단 클릭이 이루어지면 사용자 정의 속성의 값을 가져 와서 표시 할 탭의 ID를 추출 할 수 있습니다. 다음으로 jQuery로 모든 컨텐츠 탭을 선택하여 모든 것을 숨길 수 있습니다. 이 작업이 완료되면 id를 사용하여 현재 내용 탭을 표시 할 수 있습니다. 다시 jquery를 사용하여 모든 토글 아이콘을 대상으로하고 모든 것을 재설정합니다. 마지막으로 클릭 한 현재 'myTabHeader'를 참조하는 'this'선택기를 사용할 수 있으며 jquery '.find (x)'메서드를 사용하여 해당 자식 요소를 검색 할 수 있습니다. 이렇게하면 텍스트를 변경하기 위해 '.text ("문자열")'을 호출 할 수 있습니다.

//On Document ready 
$(function(){ 
    //Click event for our Accordion Tab Headers 
    $('.myTabHeader').click(function(){ 
     //Get which tab to display 
     var openTab = $(this).attr('data-content'); 
     //Close all visible tabs 
     $('.tabContent').css({ 
      display:'none' 
     }); 
     //Display our selected tab 
     $('#'+openTab).css({ 
      display:'block' 
     }); 
     //Reset icon 
     $('.toggle-icon').text("+"); 
     //Change icon for currently opened tab 
     $(this).find('.toggle-icon').text("-"); 
    }); 
}); 

물론 내가 말했듯이 텍스트 대신 스팬 요소에 이미지를 추가 할 수 있습니다. 그러면이 부분을 바꿀 수 있습니다.

//Reset icon 
$('.toggle-icon img').attr('src','/images/path-to-Plus-icon-image.jpg'); 
//Change icon for currently opened tab 
$(this).find('img').attr('src','/images/path-to-Minus-icon-image.jpg'); 

희망이 있습니다.

+0

감사합니다. 잘 작동하지만 탭을 열면 어떻게 다시 닫을 수 있습니까? 열린 탭을 닫으려면 다른 탭을 클릭해야하기 때문에 – user2809321

+0

여기 jquery 클릭 이벤트가 업데이트되었습니다. 내가 한 일은 클릭 한 탭에 특정 '열린'클래스를 추가하여 일종의 부울 플래그를 설정하는 것입니다. 그런 다음 click 이벤트에서이 특정 요소에이 클래스가 추가되었는지 확인합니다. true이면 현재 열려있는 내용 패널을 닫습니다. 그렇지 않으면 이전에와 마찬가지로 새 패널을 열고 다른 모든 패널을 닫습니다. [업데이트 된 jsfiddle] (http://jsfiddle.net/5B5KJ/69/) – IndieRok

1

난 당신이 확장 내용이 정확려고 생각? jQuery UI 탭을 사용하여 내용을 확장하고 닫을 수 있습니다. 현재이 기능의 미리보기를 얻을 수 있습니다 :

http://jqueryui.com/tabs/#collapsible

코드는 다음과 같습니다 당신은 다음 탭의 스타일을 CSS 또는 IMG 태그를 사용할 수

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>jQuery UI Tabs - Collapse content</title> 
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.0/themes/smoothness/jquery- ui.css"> 
    <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
    <script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script> 
    <link rel="stylesheet" href="/resources/demos/style.css"> 
    <script> 
    $(function() { 
    $("#tabs").tabs({ 
     collapsible: true 
    }); 
    }); 
    </script> 
</head> 
<body> 

<div id="tabs"> 
    <ul> 
    <li><a href="#tabs-1">Nunc tincidunt</a></li> 
    <li><a href="#tabs-2">Proin dolor</a></li> 
    <li><a href="#tabs-3">Aenean lacinia</a></li> 
    </ul> 
    <div id="tabs-1"> 
    <p><strong>Click this tab again to close the content pane.</strong></p> 
    <p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p> 
    </div> 
    <div id="tabs-2"> 
    <p><strong>Click this tab again to close the content pane.</strong></p> 
    <p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p> 
    </div> 
    <div id="tabs-3"> 
    <p><strong>Click this tab again to close the content pane.</strong></p> 
    <p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p> 
    </div> 
</div> 


</body> 
</html> 

.

관련 문제