Оптимизация фильтрации и показа
Уважаемые знатоки!
Подскажите новичку )) Допустим есть такая разметка: <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, время: 14:34. |