Я искал в stackoverflow и не могу найти то, что мне нужно. Я хочу сделать простой раздел с вкладками jQuery. 1 много вкладок, управляющих несколькими областями содержимого (вместо стандартной 1 области, которая переключается).
Я использую атрибут данных, я пытался использовать несколько входов, поэтому у меня нет повторяющихся идентификаторов, но безрезультатно.
Вот jQuery для вкладок
$('ul.tabs li').click(function(){
var tab_id = $(this).attr('data-tab');
$('ul.tabs li').removeClass('current');
$('.tab-content').removeClass('current');
$(this).addClass('current');
$("#"+tab_id).addClass('current');
})
var tab = $("li").data("tab").split(" ");
и HTML:
<ul class = "tabs">
<li class = "tab-link current" data-tab = "tab-1 tab-5">Tab One</li>
<li class = "tab-link" data-tab = "tab-2 tab-6">Tab Two</li>
<li class = "tab-link" data-tab = "tab-3 tab-7">Tab Three</li>
<li class = "tab-link" data-tab = "tab-4 tab-8">Tab Four</li>
</ul>
<div id = "tab-1" class = "tab-content current">
First content area
</div>
<div id = "tab-2" class = "tab-content">
Second content area
</div>
<div id = "tab-3" class = "tab-content">
Third content area
</div>
<div id = "tab-4" class = "tab-content">
Forth content area
</div>
<div id = "tab-5" class = "tab-content current">
First content area
</div>
<div id = "tab-6" class = "tab-content">
Second content area
</div>
<div id = "tab-7" class = "tab-content">
Third content area
</div>
<div id = "tab-8" class = "tab-content">
Forth content area
</div>
Итак, с начальной загрузкой все в порядке, но когда вы нажимаете на любую вкладку, вторая область содержимого исчезает, а не переключается, как первая область содержимого.
Любые идеи?
Вот рабочий jsFiddle: https://jsfiddle.net/alexgomy/9tqra6ze/11/

В вашем коде
$('ul.tabs li').removeClass('current');
$('.tab-content').removeClass('current');
Скрывает отображаемый контент при нажатии на любую вкладку.
И вы можете использовать toogleClass для управления тем, что нужно отображать.
Вот отработанный образец
Вот решение без идентификаторов (https://jsfiddle.net/L24qrbpj):
$(document).ready(function(){
$('ul.tabs li').click(function(){
var tab_id = $(this).attr('data-tab');
$('ul.tabs li').removeClass('current');
$('.tab-content').removeClass('current');
$(this).addClass('current');
$("."+tab_id).addClass('current');
})
})body {
margin-top: 100px;
line-height: 1.6;
}
.container {
width: 800px;
margin: 0 auto;
}
ul.tabs {
margin: 0 0 20px;
padding: 0px;
list-style: none;
}
ul.tabs li {
background: none;
color: #222;
display: inline-block;
padding: 10px 15px;
cursor: pointer;
}
ul.tabs li.current {
background: #ededed;
color: #222;
}
.tab-content {
display: none;
background: #ededed;
padding: 15px;
margin:0 0 30px;
}
.tab-content.current {
display: inherit;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "container">
<ul class = "tabs">
<li class = "tab-link current" data-tab = "tab-1">Tab One</li>
<li class = "tab-link" data-tab = "tab-2">Tab Two</li>
<li class = "tab-link" data-tab = "tab-3">Tab Three</li>
<li class = "tab-link" data-tab = "tab-4">Tab Four</li>
</ul>
<div class = "tab-1 tab-content current">
First content area
</div>
<div class = "tab-2 tab-content">
Second content area
</div>
<div class = "tab-3 tab-content">
Third content area
</div>
<div class = "tab-4 tab-content">
Forth content area
</div>
<div class = "tab-1 tab-content current">
First content area AVB
</div>
<div class = "tab-2 tab-content">
Second content area AVB
</div>
<div class = "tab-3 tab-content">
Third content area AVB
</div>
<div class = "tab-4 tab-content">
Forth content area AVB
</div>
</div><!-- container -->Я считаю, что использование jsfiddle не является хорошей идеей, когда у stackoverflow есть фрагмент
$(document).ready(function(){
$('ul.tabs li').click(function(){
var tab_id = $(this).attr('data-tab');
$('ul.tabs li').removeClass('current');
$('.tab-content').removeClass('current');
$(this).addClass('current');
var tab = $(this).data("tab").split(" ");
for(var i=0; i < tab.length; i++)
{
$("#"+tab[i]).addClass('current');
}
})
})body{
margin-top: 100px;
line-height: 1.6
}
.container{
width: 800px;
margin: 0 auto;
}
ul.tabs{
margin: 0 0 20px;
padding: 0px;
list-style: none;
}
ul.tabs li{
background: none;
color: #222;
display: inline-block;
padding: 10px 15px;
cursor: pointer;
}
ul.tabs li.current{
background: #ededed;
color: #222;
}
.tab-content{
display: none;
background: #ededed;
padding: 15px;
margin:0 0 30px;
}
.tab-content.current{
display: inherit;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class = "tabs">
<li class = "tab-link current" data-tab = "tab-1 tab-5">Tab One</li>
<li class = "tab-link" data-tab = "tab-2 tab-6">Tab Two</li>
<li class = "tab-link" data-tab = "tab-3 tab-7">Tab Three</li>
<li class = "tab-link" data-tab = "tab-4 tab-8">Tab Four</li>
</ul>
<div id = "tab-1" class = "tab-content current">
First content area
</div>
<div id = "tab-2" class = "tab-content">
Second content area
</div>
<div id = "tab-3" class = "tab-content">
Third content area
</div>
<div id = "tab-4" class = "tab-content">
Forth content area
</div>
<div id = "tab-5" class = "tab-content current">
First content area
</div>
<div id = "tab-6" class = "tab-content">
Second content area
</div>
<div id = "tab-7" class = "tab-content">
Third content area
</div>
<div id = "tab-8" class = "tab-content">
Forth content area
</div>Я надеюсь тебе это нужно
Вам следовало отредактировать первоначальный ответ, а не копировать и делать его в виде фрагмента.
Такое очевидное решение. Спасибо.