Меню аккардион jQuery
Господа программисты помогите пож-та немного доработать.
Есть вертикальное меню меню вида: <ul id="menu"> <li> <a href="#">Главная</a> <ul> <li><a href="#">Каталог 1</a></li> <li><a href="#">Каталог 2</a> <ul> <li><a href="#">Подкаталог 1</a></li> <li><a href="#">Подкаталог 2</a></li> <li><a href="#">Подкаталог 3</a></li> </ul> </li> <li><a href="#">Каталог 3</a></li> </ul> </li> <li> <a href="#">Programming Languages</a> <ul> <li><a href="#">PHP</a></li> <li><a href="#">Ruby</a></li> </ul> </li> </ul> При клике на Главную открываются пункты: Каталоги, а подкаталоги остаются скрыты. Какие изменения внести в код ниже чтобы Подкаталоги тоже открывались при клике на Главную. function initMenu() { $('#menu ul').hide(); $('#menu ul:first').show(); $('#menu li a').click( function() { var checkElement = $(this).next(); if((checkElement.is('ul')) && (checkElement.is(':visible'))) { return false; } if((checkElement.is('ul')) && (!checkElement.is(':visible'))) { $('#menu ul:visible').slideUp('normal'); checkElement.slideDown('normal'); return false; } } ); } $(document).ready(function() {initMenu();}); |
Это все можно сделать с помощью одного лишь СSS и не нужно здесь скрипта =) сэкономишь на времени загрузки страницы пару милисек =)
|
Цитата:
<style> #menu > li ul { display: none; } #menu > li > a:focus ~ ul, #menu > li > a:focus ~ ul ul { display: block; } </style> <ul id="menu"> <li> <a href="#">Главная</a> <ul> <li><a href="#">Каталог 1</a></li> <li><a href="#">Каталог 2</a> <ul> <li><a href="#">Подкаталог 1</a></li> <li><a href="#">Подкаталог 2</a></li> <li><a href="#">Подкаталог 3</a></li> </ul> </li> <li><a href="#">Каталог 3</a></li> </ul> </li> <li> <a href="#">Programming Languages</a> <ul> <li><a href="#">PHP</a></li> <li><a href="#">Ruby</a></li> </ul> </li> </ul> |
devote,
извини забыл оно должно не сворачиваться=( прочитал просто меню =))) |
Видимо в таком варианте решения нет :cray:
|
DzirT,
Да есть - не хнычь - думайте - или ждите вечера я или devote или melky поправят к примеру для инициализации нун так $('#menu li:first ul').show() |
нашел вариант к списку подкаталогов присвоить селектор :
<ul id="menu2"> <li><a href="#">Подкаталог 1</a></li> <li><a href="#">Подкаталог 2</a></li> <li><a href="#">Подкаталог 3</a></li> </ul> ну а далее .toggle() : function initMenu() { $('#menu ul').hide(); $('#menu ul:first, #menu li:first ul').show(); $('#menu li a').click( function() { $('#menu2, #menu2 li, #menu2 li a').toggle() var checkElement = $(this).next(); if((checkElement.is('ul')) && (checkElement.is(':visible'))) { return false; } if((checkElement.is('ul')) && (!checkElement.is(':visible'))) { $('#menu ul:visible, #menu li:visible ul').slideUp('normal'); checkElement.slideDown('normal'); return false; } } ); } $(document).ready(function() {initMenu();}); На сколько это правильно? А вот без второго селектора, как изначально задумано, никак - не могу понять как указать в таком случае вложенность. P.S. и так при клике на любом пункте <ul id="menu2">....</ul> закрывается. |
Цитата:
<!DOCTYPE html> <html> <head> <style type="text/css"> #menu > li > ul { display: none; } </style> <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function(){ $("#menu > li > a").click(function() { $( "~ ul", this ).slideToggle(); }); }); </script> </head> <body> <ul id="menu"> <li> <a href="#">Главная</a> <ul> <li><a href="#">Каталог 1</a></li> <li><a href="#">Каталог 2</a> <ul> <li><a href="#">Подкаталог 1</a></li> <li><a href="#">Подкаталог 2</a></li> <li><a href="#">Подкаталог 3</a></li> </ul> </li> <li><a href="#">Каталог 3</a></li> </ul> </li> <li> <a href="#">Programming Languages</a> <ul> <li><a href="#">PHP</a></li> <li><a href="#">Ruby</a></li> </ul> </li> </ul> </body> </html> |
Цитата:
Цитата:
|
Цитата:
<!DOCTYPE html> <html> <head> <style type="text/css"> #menu > li > ul { display: none; } #menu > li:first-child > ul { display: block; } </style> <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function(){ $("#menu > li > a").click(function() { $( "~ ul", this ).slideToggle(); var self = $( this ).next(); $( "#menu > li > ul" ).each(function() { if ( self[0] !== this ) { $( this ).slideUp(); } }); }); }); </script> </head> <body> <ul id="menu"> <li> <a href="#">Главная</a> <ul> <li><a href="#">Каталог 1</a></li> <li><a href="#">Каталог 2</a> <ul> <li><a href="#">Подкаталог 1</a></li> <li><a href="#">Подкаталог 2</a></li> <li><a href="#">Подкаталог 3</a></li> </ul> </li> <li><a href="#">Каталог 3</a></li> </ul> </li> <li> <a href="#">Еще какая то</a> <ul> <li><a href="#">Каталог 1</a></li> <li><a href="#">Каталог 2</a> <ul> <li><a href="#">Подкаталог 1</a></li> <li><a href="#">Подкаталог 2</a></li> <li><a href="#">Подкаталог 3</a></li> </ul> </li> <li><a href="#">Каталог 3</a></li> </ul> </li> <li> <a href="#">Programming Languages</a> <ul> <li><a href="#">PHP</a></li> <li><a href="#">Ruby</a></li> </ul> </li> </ul> </body> </html> |
Часовой пояс GMT +3, время: 19:10. |