Просмотр полной версии : Переключение табов стрелками
Здравствуйте!
Мне нужно что бы вкладки на странице переключались стрелками "Вперед"/"Назад".. Сами табы сделал, а вот как к ним подключить стрелки через js ума не приложу.:( Помогите пожалуйста.
вот код
html:
<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 class="box">
содержимое вкладки 2
</div>
<div class="box">
содержимое вкладки 3
</div>
<div class="controls">
<a href="#" class="btn btn-default prev">< Назад</a>
<a href="#" class="btn btn-default next">Вперед ></a>
</div>
</div>
js:
(function ($) {
$(function () {
$('ul.tabs').delegate('li:not(.current)', 'click', function () {
$(this).addClass('current').siblings().removeClass ('current')
.parents('div.section').find('div.box').eq($(this) .index())
.show().siblings('div.box').hide();
})
})
})(jQuery);
Igorsrt, ты полный пример сделай. ;) На нем и покажут...
А так на словах:
- лови событие клавиатуры на материнском элементе (к примеру)
- выясняй какой "таб" текущий
- определяй направление "листания"
- гаси "старый" "таб"
- активируй "новый"
Igorsrt, ты полный пример сделай. ;) На нем и покажут...
Спасибо. Тая я вроде полный код и выложил: html и js (jQuery)... вот еще 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;
}
... вообще меня устроит любой другой рабочий пример (со стрелками) на jQuery
Что за стрелки такие?
кнопки для переключения на следующий или предыдущий таб )
вот похожий пример https://jsfiddle.net/LtLzr9yj/ - только он кажется для bootstrap, а у меня просто jQuery на сайте
Igorsrt, ты не видишь что-ли что они у тебя по-другому называются Prev/Next с какой целью ты вопрос формулируешь с "Вперед"/"Назад" ты идиот или что?
...специально для вас исправил на "Вперед"/"Назад"
Тая я вроде полный код и выложил
Вот как выглядит полный пример.
<!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>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.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);
})
$('.prev').click(function(){
var i=$('.current').index();
var obj=$('.tabs > li');
i=(i<1)? obj.length-1: i-1;
act(obj.get(i));
});
$('.next').click(function(){
var i=$('.current').index();
var obj=$('.tabs > li');
i=++i%obj.length;
act(obj.get(i));
});
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 class="box">
содержимое вкладки 2
</div>
<div class="box">
содержимое вкладки 3
</div>
<div class="controls">
<a href="#" class="btn btn-default prev">< Prev</a>
<a href="#" class="btn btn-default next">Next ></a>
</div>
</div>
</body>
</html>
ksa вон про клавиатурные стрелки подумал
Ага... :yes:
ты идиот или что?
Ну зачем так-то... :(
Новый год ведь уже идет к нам! Мы уже во всю его отмечаем... http://smayli.ru/data/smiles/bohaut-249.gif
Вот как выглядит полный пример.
Спасибо огромное :)
добрый ты
И выпимший... :D
Igorsrt,
вариант...
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<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 src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
$(".section").each(function(indx, el) {
var li = $("li", el),
box = $(".box", el),
btn = $(".btn", el),
len = li.length - 1,
i = 0;
$(el).on("click", "li", function() {
i = li.index(this);
li.removeClass("current").eq(i).addClass("current");
box.removeClass("visible").eq(i).addClass("visible")
});
$(el).on("click", ".btn", function(event) {
event.preventDefault();
i += $(this).is(".prev") ? -1 : 1;
i < 0 && (i = len);
i > len && (i = 0);
li.eq(i).click()
})
})
});
</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 class="box">
содержимое вкладки 2
</div>
<div class="box">
содержимое вкладки 3
</div>
<div class="controls">
<a href="#" class="btn btn-default prev">< Prev</a>
<a href="#" class="btn btn-default next">Next ></a>
</div>
</div>
</body>
</html>
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot