Переключатель табов в самих вкладках
Здравствуйте!
Пытаюсь немного переделать код, полученный на этом форуме, для того что бы переключатели табов находились в самих вкладках этого таба (что бы ниже можно было добавлять еще информацию)...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<style type='text/css'>
.box {
display: none;
padding: 0px !important;
background-color: #FFF;
}
.box.visible {
display: block;
padding: 10px;
}
ul.tabs {
height: 27px;
background: #FFF;
border-bottom: 1px solid #777;
padding: 0 4px;
overflow: hidden;
list-style: none;
}
.tabs li.current, .tabs li:hover {
background-color:#52c8ff;
color:#FFFFFF;
border-color:#52c8ff;
border-left-style: solid;
border-right-style: solid;
border-top-style: solid;
}
.tabs li {
float: left;
color: grey;
line-height: 27px;
margin-right: 1px !important;
padding: 0 7px 10px 8px !important;
font-weight: bold;
cursor: pointer;
}
.tabs li.current span {
color: #FFF;
}
.tabs li span {
float: left;
padding: 0 11px 0 0;
height: 27px;
color: #FFF;
}
</style>
<script type='text/javascript'>
$(function () {
$('ul.tabs').delegate('li:not(.current)', 'click', function () {
act(this);
})
function act(Obj){
$(Obj).addClass('current').siblings().removeClass('current')
.parents('div.section').find('div.box').eq($(Obj).index())
.show().siblings('div.box').hide();
};
})
</script>
</head>
<body>
<div class="section">
<!-- если переключатели стоят здесь, то все работает без проблем, но я хочу, что бы они были в самих табах
<ul class="tabs">
<li class="current">Вкладка 1</li>
<li>Вкладка 2</li>
<li>Вкладка 3</li>
</ul>
-->
<div class="box visible">содержимое вкладки 1
<div>Здесь какая-то информация</div>
<div>Здесь потом будет картинка</div>
<!-- а вот сюда я хочу вставить переключатель табов (типа буллетов), но так "глючит"-->
<ul class="tabs">
<li class="current">Вкладка 1</li>
<li>Вкладка 2</li>
<li>Вкладка 3</li>
</ul>
<div>А здесь еще какая-то информация</div>
</div>
<div class="box">содержимое вкладки 2
<div>Здесь какая-то информация</div>
<div>Здесь потом будет картинка</div>
<!-- а вот сюда я хочу вставить переключатель табов (типа буллетов), но так "глючит"-->
<ul class="tabs">
<li class="current">Вкладка 1</li>
<li>Вкладка 2</li>
<li>Вкладка 3</li>
</ul>
<div>А здесь еще какая-то информация</div>
</div>
<div class="box">содержимое вкладки 3
<div>Здесь какая-то информация</div>
<div>Здесь потом будет картинка</div>
<!-- а вот сюда я хочу вставить переключатель табов (типа буллетов), но так "глючит"-->
<ul class="tabs">
<li class="current">Вкладка 1</li>
<li>Вкладка 2</li>
<li>Вкладка 3</li>
</ul>
<div>А здесь еще какая-то информация</div>
</div>
</div>
</body>
</html>
При переключении табов таким способом периодически "глючит" переключатель - понимаю, что это происходит из-за того, что разным элементам li в различных вкладках присваивается класс "current", но как это исправить не знаю (( |
Igorsrt,
подожду толмача |
Цитата:
p.s. Хотел бы я так же понимать в скриптах - как этому научиться? ( |
Igorsrt,
Цитата:
|
))
я хочу, что бы переключатели табов были в самих вкладках, т.е. что бы в этих самых вкладках, ниже значков переключателей можно было добавить еще какую-то информацию... что-то типа такого: https://drive.google.com/file/d/0B4l...ew?usp=sharing |
Igorsrt,
сделайте html с css и напишите как это должно работать, может быть тогда станет понятнее. |
Igorsrt,
Глючит из-за того, что у вас один и тот же переключатель
<ul class="tabs">
<li class="current">Вкладка 1</li>
<li>Вкладка 2</li>
<li>Вкладка 3</li>
</ul>
присутствует три раза. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
...)))
я хочу, что бы у меня по середине вкладки таба были переключатели (не сверху, не снизу, а именно в середине, что бы можно было вставлять контент для вкладок выше или ниже этих переключателей) ...Возможно так делать и нельзя, и нужно использовать свойство css position: absolute... но я боюсь, что это скажется на адаптивности |
|
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<style type='text/css'>
.box {
display: none;
padding: 0px !important;
background-color: #FFF;
}
.box.visible {
display: block;
padding: 10px;
}
ul.tabs {
height: 27px;
background: #FFF;
border-bottom: 1px solid #777;
padding: 0 4px;
overflow: hidden;
list-style: none;
}
.tabs li.current, .tabs li:hover {
background-color:#52c8ff;
color:#FFFFFF;
border-color:#52c8ff;
border-left-style: solid;
border-right-style: solid;
border-top-style: solid;
}
.tabs li {
float: left;
color: grey;
line-height: 27px;
margin-right: 1px !important;
padding: 0 7px 10px 8px !important;
font-weight: bold;
cursor: pointer;
}
.tabs li.current span {
color: #FFF;
}
.tabs li span {
float: left;
padding: 0 11px 0 0;
height: 27px;
color: #FFF;
}
</style>
<script type='text/javascript'>
$(function () {
$('ul.tabs').delegate('li:not(.current)', 'click', function () {
act(this);
})
function act(Obj){
$(Obj).addClass('current').siblings().removeClass('current');
var tabId = ($(Obj).index() + 1).toString();
$('.info').html('Здесь какая-то информация ' + tabId);
$('.pict').html('Здесь потом будет картинка ' + tabId);
$('.add').html('А здесь еще какая-то информация ' + tabId);
};
})
</script>
</head>
<body>
<div class="section">
<div class="box visible">
<div class='info'>Здесь какая-то информация 1</div>
<div class='pict'>Здесь потом будет картинка 1</div>
</div>
<ul class="tabs">
<li class="current">Вкладка 1</li>
<li>Вкладка 2</li>
<li>Вкладка 3</li>
</ul>
<div class='add'>А здесь еще какая-то информация 1</div>
</div>
</body>
</html>
|
Igorsrt,
для структуры
<div class="tabs">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<div>
new 1
</div>
<div>
new 2
</div>
<div>
new 3
</div>
</div>
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.tabs > div {
display: none;
}
.tabs > ul > li.current {
background-color: #52C8FF;
}
.tabs > ul > li {
display: inline-block;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
$(".tabs").each(function(indx, el) {
var li = $(">ul>li", el),
divs = $(">div", el);
li.on("click", function(event) {
event.preventDefault();
var i = li.index(this);
li.not($(this).toggleClass("current")).removeClass("current");
divs.not(divs.eq(i).toggle()).hide()
})
})
});
</script>
</head>
<body>
<div class="tabs">
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
<div>
<div class="tabs">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<div>
new 1
</div>
<div>
new 2
</div>
<div>
new 3
</div>
</div>
</div>
<div>
test 2 add tabs
</div>
<div>
test 3 add tabs
</div>
</div>
</body>
</html>
|
Igorsrt,
http://api.jqueryui.com/tabs/ |
что-то, я не понял... или это не то (
В первом случае (коде Рони), весь контент "засунут" в скрипт и к нему подставляется ID таба? |
Цитата:
|
Igorsrt,
Цитата:
Весь контент + ID таба засунут в скрипт для примера. У вас откуда появляется контент в табах? В скрипте по конкретному ID таба можно брать контент с сервера или выбирать из заранее загруженного массива - совершенно необязательно иметь для каждого таба заранее расписанный html |
Цитата:
контент в табах появляется из php функции... насколько я понимаю, весь "геморой" в "моем" коде возникает из-за того что разным элементам li в раных div присвоены разным классам... Можно сделать так, что бы функция js "очищала" все элементы на странице (кроме нужного) от класса current? |
Igorsrt,
Цитата:
Насчет очистки - удалите сначала класс у всех, потом назначьте нужному. |
Цитата:
контент в табах появляется из php функции... насколько я понимаю, весь "геморой" в "моем" коде возникает из-за того что разным элементам li в разных div присвоены разные классы... Можно сделать так, что бы функция js "очищала" все элементы на странице (кроме нужного) от класса current? |
Igorsrt,
Не понял - почему повтор? Цитата:
|
| Часовой пояс GMT +3, время: 21:57. |