2014-03-31 118 views
0

道歉之前已經被覆蓋,但我無法找到任何具體的...JQuery的標籤式內容

我是新的jQuery和創造了良好的工作有些標籤內容框,但是,我知道使用的代碼並不像應該那樣高效!

有沒有一種方法可以優化下面的代碼,以便我不必指定每個選項卡式按鈕和每個選項卡式內容?

在此先感謝您的幫助!下面的代碼:)

HTML

  <div id="tabs"> 
       <div id="tabbed-buttons"> 
        <div id="tb" class="tb1"> 
         Plumbing 
        </div> 
        <div id="tb" class="tb2"> 
         Heating 
        </div> 
        <div id="tb" class="tb3"> 
         Underfloor Heating 
        </div> 
        <div id="tb" class="tb4"> 
         Renewable Energy 
        </div> 
       </div> 
       <div id="tabbed-content"> 
        <div id="tc1"> 
         Text for tabbed content 1 
        </div> 
        <div id="tc2"> 
         Text for tabbed content 2 
        </div> 
        <div id="tc3"> 
         Text for tabbed content 3 
        </div> 
        <div id="tc4"> 
         Text for tabbed content 4 
        </div> 
       </div> 
      </div> 

JQUERY

  // ---------- ---------- Tabbed Content ---------- ---------- 
      $(document).ready(function(){ 
       $("#tc2, #tc3, #tc4").hide(); 
       $(".tb1").css({ 
         background: "#4867ad", 
         background: "-moz-linear-gradient(top, #273264 0%, #4867ad 100%)", 
         background: "-webkit-gradient(linear, left top, left bottom, color-stop(0%,#273264), color-stop(100%,#4867ad))", 
         background: "-webkit-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "-o-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "-ms-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "linear-gradient(to bottom, #273264 0%,#4867ad 100%)", 
         color: "#fff" 
        }); 
       $(".tb1").click(function() 
       { 
        $("#tc1").show(); 
        $("#tc2, #tc3, #tc4").hide(); 
        $(".tb1").css({ 
         background: "#4867ad", 
         background: "-moz-linear-gradient(top, #273264 0%, #4867ad 100%)", 
         background: "-webkit-gradient(linear, left top, left bottom, color-stop(0%,#273264), color-stop(100%,#4867ad))", 
         background: "-webkit-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "-o-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "-ms-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "linear-gradient(to bottom, #273264 0%,#4867ad 100%)", 
         color: "#fff" 
        }); 
        $(".tb2, .tb3, .tc4").css({background:"auto",color:"#444"}); 
       }); 
       $(".tb2").click(function() 
       { 
        $("#tc1, #tc3, ¢tc4").hide(); 
        $("#tc2").show(); 
        $(".tb2").css({ 
         background: "#4867ad", 
         background: "-moz-linear-gradient(top, #273264 0%, #4867ad 100%)", 
         background: "-webkit-gradient(linear, left top, left bottom, color-stop(0%,#273264), color-stop(100%,#4867ad))", 
         background: "-webkit-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "-o-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "-ms-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "linear-gradient(to bottom, #273264 0%,#4867ad 100%)", 
         color: "#fff" 
        }); 
        $(".tb1, .tb3, .tc4").css({background:"auto",color:"#444"}); 
       }); 
       $(".tb3").click(function() 
       { 
        $("#tc1, #tc2, #tc4").hide(); 
        $("#tc3").show(); 
        $(".tb3").css({ 
         background: "#4867ad", 
         background: "-moz-linear-gradient(top, #273264 0%, #4867ad 100%)", 
         background: "-webkit-gradient(linear, left top, left bottom, color-stop(0%,#273264), color-stop(100%,#4867ad))", 
         background: "-webkit-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "-o-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "-ms-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "linear-gradient(to bottom, #273264 0%,#4867ad 100%)", 
         color: "#fff" 
        }); 
        $(".tb1, .tb2, .tb4").css({background:"auto",color:"#444"}); 
       }); 
       $(".tb4").click(function() 
       { 
        $("#tc1, #tc2, #tc3").hide(); 
        $("#tc4").show(); 
        $(".tb4").css({ 
         background: "#4867ad", 
         background: "-moz-linear-gradient(top, #273264 0%, #4867ad 100%)", 
         background: "-webkit-gradient(linear, left top, left bottom, color-stop(0%,#273264), color-stop(100%,#4867ad))", 
         background: "-webkit-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "-o-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "-ms-linear-gradient(top, #273264 0%,#4867ad 100%)", 
         background: "linear-gradient(to bottom, #273264 0%,#4867ad 100%)", 
         color: "#fff" 
        }); 
        $(".tb1, .tb2, .tb3").css({background:"auto",color:"#444"}); 
       }); 
      }); 

回答

2

HTML

觀看按鈕和內容的ID的對應關係。

ID = 「製表1」 對應於ID = 「內容標籤-1」 等的

<div id="tabs"> 
     <div id="tabbed-buttons"> 
      <div id="tab-1">Plumbing</div> 
      <div id="tab-2">Heating</div> 
      <div id="tab-3">Underfloor Heating</div> 
      <div id="tab-4">Renewable Energy</div> 
     </div> 
     <div id="tabbed-content"> 
      <div id="content-tab-1">Text for tabbed content 1</div> 
      <div id="content-tab-2">Text for tabbed content 2</div> 
      <div id="content-tab-3">Text for tabbed content 3</div> 
      <div id="content-tab-4">Text for tabbed content 4</div> 
     </div> 
    </div> 

CSS

地點的CSS用於單個類的活性按鈕。加入你的風格需要...

.active { 
    background: #4867ad; 
    color: #fff; 
} 

JQUERY

$(function(){ 

    $("#tabbed-buttons").on("click", "div", function() { 
     // Remove active class from all tab buttons 
     $('#tabbed-buttons div').removeClass('active'); 
     // Add active class to clicked button 
     $(this).addClass('active'); 
     // Hide all content divs 
     $('#tabbed-content div').hide(); 
     // Show the one that corresponds to clicked button 
     $('#content-' + $(this).prop('id')).show(); 

    }); 

    $("#tab-1").click(); // Init by clicking in 1st buton 

}); 

JSFIDDLE

1

這裏是 「製表」 給定內容的方式。你不必ID添加到內容元素:

function TabbedNav() { 
 
    // Select all the articles and hide them 
 
    var allArticles = $('div.articlesContainer').children('article'); 
 
    $(allArticles).hide(); 
 
    
 
    // Show the first article 
 
    $(allArticles[0]).show(); 
 

 
    // Add class "active" to first tab 
 
    var allTabs = $('ul.tabbednav').children('li'); 
 
    $(allTabs[0]).addClass('active'); 
 

 
    $('ul.tabbednav li a').each(function (index) { 
 
     $(this).click(function() { 
 

 
      // Add class "active" to clicked tab 
 
      $(this).parent().addClass('active'); 
 

 
      // Remove class "active" from all other tabs 
 
      $('ul.tabbednav li a').not(this).parent().removeClass('active'); 
 

 
      // Active article 
 
      var activeArticle = $(allArticles[index]); 
 

 
      // Hide all articles but the active one 
 
      $('div.articlesContainer article').hide(); 
 

 
      // Show active article 
 
      $(activeArticle).show(); 
 
     }); 
 
    }); 
 
} 
 
TabbedNav();
.content { 
 
    max-width:500px; 
 
    font-family: Arial, sans-serif; 
 
    margin: 10px auto; 
 
    -moz-box-shadow: 1px 1px 2px 0 rgba(0,0,0,.15); 
 
    -webkit-box-shadow: 1px 1px 2px 0 rgba(0,0,0,.15); 
 
    box-shadow: 1px 1px 2px 0 rgba(0,0,0,.15); 
 
} 
 

 
ul.tabbednav { 
 
    list-style-type:none; 
 
    margin:0; 
 
    padding:0; 
 
    height:31px; 
 
    border-bottom: 1px solid #ccc; 
 
    display: flex; 
 
} 
 

 
ul.tabbednav li { 
 
    -webkit-flex: 1; /* Safari 6.1+ */ 
 
    -ms-flex: 1; /* IE 10 */ 
 
    flex: 1; 
 
} 
 
ul.tabbednav li a { 
 
    display: block; 
 
    text-align: center; 
 
    text-decoration: none; 
 
    color:#777; 
 
    font-size: 12px; 
 
    font-weight: 600; 
 
    padding: 0 8px; 
 
    height:30px; 
 
    line-height:30px; 
 
    border: 1px solid #ccc; 
 
    -webkit-border-radius: 3px 3px 0 0; 
 
    -moz-border-radius: 3px 3px 0 0; 
 
    border-radius: 3px 3px 0 0; 
 
    background: #ffffff; 
 
    background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNlNWU1ZTUiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); 
 
    background: -moz-linear-gradient(top, #ffffff 0%, #e5e5e5 100%); /* FF3.6+ */ 
 
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e5e5e5)); /* Chrome,Safari4+ */ 
 
    background: -webkit-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* Chrome10+,Safari5.1+ */ 
 
    background: -o-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* Opera 11.10+ */ 
 
    background: -ms-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* IE10+ */ 
 
    background: linear-gradient(to bottom, #ffffff 0%,#e5e5e5 100%); /* W3C */ 
 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e5e5e5',GradientType=0); /* IE6-8 */ 
 
} 
 

 
ul.tabbednav li.active a { 
 
    color:#111; 
 
    background:#fff; 
 
    border-bottom: 1px solid #fff; 
 
} 
 

 
.articlesContainer { 
 
    position: relative; 
 
    background:#fff; 
 
    border: 1px solid #ccc; 
 
    border-top: none; 
 
    -webkit-border-radius: 0 0 3px 3px; 
 
    -moz-border-radius: 0 0 3px 3px; 
 
    border-radius: 0 0 3px 3px; 
 
} 
 

 
article { 
 
    padding: 10px; 
 
    color:#222; 
 
    background: #fff; 
 
} 
 

 
.articlesContainer { 
 
    background:#fff; 
 
    border: 1px solid #ccc; 
 
    border-top: none; 
 
    -webkit-border-radius: 0 0 3px 3px; 
 
    -moz-border-radius: 0 0 3px 3px; 
 
    border-radius: 0 0 3px 3px; 
 
} 
 

 
article h1 { 
 
    padding: 10px 0 0 0; 
 
    margin:0 0 5px 0; 
 
} 
 

 
article ul { 
 
    margin: 0; 
 
} 
 

 
article p, 
 
article ul li { 
 
    font-size: 12px; 
 
    line-height: 1.5; 
 
    margin:0; 
 
} 
 

 
article p { 
 
    text-align: justify; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="content"> 
 
    <ul class="tabbednav"> 
 
     <li><a href="#">Description</a></li>  
 
     <li><a href="#">Delivery</a></li> 
 
     <li><a href="#">Composition</a></li> 
 
    </ul> 
 
    
 
    <div class="articlesContainer"> 
 
     <article> 
 
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean molestie eros ac euismod pretium. Sed rhoncus lectus nec metus aliquet porta. Cras cursus justo odio, at tristique erat convallis id. Duis venenatis scelerisque justo. Maecenas iaculis malesuada lacus, id ultricies dui.</p> 
 
     </article> 
 
    
 
     <article> 
 
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean molestie eros ac euismod pretium. Sed rhoncus lectus nec metus aliquet porta. Cras cursus justo odio, at tristique erat convallis id. Duis venenatis scelerisque justo. Maecenas iaculis malesuada lacus, id ultricies dui. Nam scelerisque elit vitae lacus gravida, eget sodales nibh faucibus. Nulla elit sapien, molestie in mattis eget, consectetur vitae ipsum. Donec ut placerat magna, ut sodales tortor. Sed quis turpis tincidunt, fringilla felis ut, venenatis nisi. Proin egestas viverra nulla, nec dignissim nisi molestie eget.</p> 
 
     </article> 
 
     
 
     <article> 
 
      <ul> 
 
      <li>Cotton 80%</li> 
 
      <li>Cotton 10%</li> 
 
      <li>Elastan 10%</li> 
 
      </ul> 
 
     </article> 
 
    </div>  
 
</div>

1

你的這個:

$("#tabbed-buttons").on("click", "div", function() { 
 
    $('#tabbed-buttons div').removeClass('active'); 
 
    $(this).addClass('active'); 
 
    $('#tabbed-content div').hide(); 
 
    $('#' + $(this).data('content')).show(); 
 
}); 
 

 
    $("#tabbed-buttons > div:first").click();
#tabs { 
 
    font-family: Arial, sans-serif; 
 
    max-width: 560px; 
 
    margin: 0 auto; 
 
} 
 

 
#tabbed-buttons { 
 
    overflow: hidden; 
 
} 
 

 
#tabbed-buttons > div { 
 
    -moz-box-sizing: border-box; 
 
    -webkit-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
    width: 25%; 
 
    float: left; 
 
    cursor: pointer; 
 
    text-align: center; 
 
    color: #3a3a3a; 
 
    font-size: 12px; 
 
    font-weight: 600; 
 
    padding: 0 8px; 
 
    height: 30px; 
 
    line-height: 30px; 
 
    border: 1px solid #ccc; 
 
    bprder-bottom: none; 
 
    -webkit-border-radius: 3px 3px 0 0; 
 
    -moz-border-radius: 3px 3px 0 0; 
 
    border-radius: 3px 3px 0 0; 
 
    background: #efefef; 
 
} 
 

 
#tabbed-buttons > div.active { 
 
    background: #fff; 
 
    color: #222; 
 
    border: 1px solid #ccc; 
 
    border-bottom: 1px solid #fff; 
 
} 
 

 
#tabbed-content { 
 
    clear: both; 
 
    border: 1px solid #ccc; 
 
    border-top: none; 
 
    background: #fff; 
 
    padding: 10px; 
 
    -webkit-border-radius: 0 0 3px 3px; 
 
    -moz-border-radius: 0 0 3px 3px; 
 
    border-radius: 0 0 3px 3px; 
 
} 
 

 
#tabbed-content h3 { 
 
    margin: 0 0 5px 0; 
 
} 
 

 
#tabbed-content p { 
 
    font-size: 12px; 
 
    line-height: 1.5; 
 
    text-align: justify; 
 
    margin: 0; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="tabs"> 
 
    <div id="tabbed-buttons"> 
 
    <div data-content="tc1">Plumbing</div> 
 
    <div data-content="tc2">Heating</div> 
 
    <div data-content="tc3">Underfloor Heating</div> 
 
    <div data-content="tc4">Renewable Energy</div> 
 
    </div> 
 
    <div id="tabbed-content"> 
 
    <div id="tc1"> 
 
     <h3>Plumbing</h3> 
 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis delectus quasi tempora, voluptatibus quis ex maiores minima, nesciunt itaque qui eveniet, sequi tempore, quia recusandae atque omnis soluta cum dicta.</p> 
 
    </div> 
 
    <div id="tc2"> 
 
     <h3>Heating</h3> 
 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Maiores iste sed odio laborum similique odit eos quo, excepturi quasi quos pariatur aut quidem sunt officiis blanditiis veritatis ut rem natus!</p> 
 
    </div> 
 
    <div id="tc3"> 
 
     <h3>Underfloor Heating</h3> 
 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Repellat aspernatur veritatis dignissimos odio odit cupiditate iusto dolore sapiente laudantium quam a maiores repudiandae illum accusantium laborum temporibus ipsa, delectus eius!</p> 
 
    </div> 
 
    <div id="tc4"> 
 
     <h3>Renewable Energy</h3> 
 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa, provident cupiditate, explicabo error pariatur ipsam nam, corrupti laudantium atque impedit et quibusdam! Laborum error itaque dolores ullam ipsum dicta omnis.</p> 
 
    </div> 
 
    </div> 
 
</div>