Оптимизация фильтрации и показа
Уважаемые знатоки!
Подскажите новичку )) Допустим есть такая разметка:
<div id="container">
<div id="nav">
<a href="#title1">Показать только Title 1</a>
<a href="#title2">Показать только Title 2</a>
<a href="#title3">Показать только Title 3</a>
<!-- и так далее -->
</div>
<div id="title1" class="panel">Title 1</div>
<div id="title2" class="panel">Title 2</div>
<div id="title3" class="panel">Title 3</div>
<!-- и так далее -->
</div>
Мне нужно, чтобы при клике на ссылку показывался только соответствующий ей блок. Таких блоков будет где-то 30-40 штук. Я делаю так:
$(document).ready(function(){
$('#nav a[href="#title1"]').click(function(){
$('.panel').hide();
$('#title1').show();
});
$('#nav a[href="#title2"]').click(function(){
$('.panel').hide();
$('#title2').show();
});
$('#nav a[href="#title3"]').click(function(){
$('.panel').hide();
$('#title3').show();
});
// и так далее
});
Но, я подозреваю, что этот код можно упростить, например, как-то так: 1. Отследить клик по ссылке внутри блока #nav. 2. Занести в переменную соответствующее значение href. 2. Спрятать все блоки с классом .panel 3. Вывести блок с id (из переменной) Как это практически сделать? А может есть еще более простое решение? |
XFlame,
:write:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.panel{
display: none;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
var $title = $('a[href ^= #title]'), $panel = $('.panel');
$('#container').on('click', $title, function (event) {
var id = event.target.hash, div = $(id);
$panel.not(div).slideUp()
div.slideToggle();
return false
});
});
</script>
</head>
<body>
<div id="container">
<div id="nav">
<a href="#title1">Показать/Скрыть только Title 1</a>
<a href="#title2">Показать/Скрыть только Title 2</a>
<a href="#title3">Показать/Скрыть только Title 3</a>
<!-- и так далее -->
</div>
<div id="title1" class="panel">Title 1</div>
<div id="title2" class="panel">Title 2</div>
<div id="title3" class="panel">Title 3</div>
<!-- и так далее -->
</div>
</body>
</html>
|
| Часовой пояс GMT +3, время: 23:42. |