Выпадающее меню на jquery
Очередная версия выпадающего меню с автоматическим сворачиванием ... натолкнуло творочество Deff, тут
сам код переключения получился компактным может кому пригодится :thanks: <!DOCTYPE HTML> <html> <head> <title></title> <meta charset="utf-8" /> <style type="text/css"> li ul { display: none; } </style> <script src="https://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> $(document).ready(function () { $('li').click(function (event) { $(this).parent().find("li ul:visible").slideUp() if($(this).children("ul").is(":hidden"))$(this).children("ul").slideDown() ; event.stopPropagation(); }); }); </script> </head> <body> <ul class='left_nav_menu' id='nav_menu_content'> <li><a href='#0'>Категория_1</a> <ul> <li><a href="#">Подкатегория_1</a> <ul> <li><a href="#">Подподкатегория_1</a></li> </ul> </li> <li><a href="#">Подкатегория_2</a> <ul> <li><a href="#">Подподкатегория_2</a></li> <li><a href="#">Подподкатегория_3</a></li> </ul> </li> <li><a href="#">Подкатегория_3</a> <ul> <li><a href="#">Подподкатегория_4</a></li> <li><a href="#">Подподкатегория_5</a></li> </ul> </li> </ul> </li> <li><a href='#0'>Категория_2</a> <ul> <li><a href="#">Подкатегория_4</a> <ul class="material_cat"> <li><a href="#">Подподкатегория_6</a></li> </ul> </li> </ul> </li> </ul> <ul> <li>Подарки <ul> <li>Сувенирные изделия <ul > <li>Музыкальные</li> <li>Шкатулки</li> <li>Из дерева</li> <li>Металлические</li> </ul> </li> <li>Цветы <ul> <li>Розы <ul > <li>Чайная</li> <li>Махровая</li> <li>Чёрная</li> </ul> </li> <li>Подарочные цветы <ul > <li>Гвоздика</li> <li>Лилия</li> <li>Орхидея</li> </ul> </li> </ul> </li> </ul> </li> </ul> </body> </html> |
рони,
код покороче, но имхо постольку, поскольку у Вас кликабельных ссылок нема |
Цитата:
|
Цитата:
Цитата:
|
Deff, всё одно непонимаю как это увеличивает или уменьшает код открытия закрытия
|
Цитата:
|
Элегантное решение. Красиво.
|
Други, спасибо за код. Но не могли бы вы его дополнить таким образом, чтобы добавлялся класс 'active' к выбранному пункту меню? Спасибо.
|
Выпадающее меню на jquery с подсветкой выбранного пункта
AMSPeople,
<!DOCTYPE HTML> <html> <head> <title></title> <meta charset="utf-8" /> <style type="text/css"> li ul { display: none; } li.active::first-line { background-color: #8A2BE2; color: #FFFFFF; } li.active li.active::first-line { background-color: #FF1493; color: #FFFFFF; } li.active > a { color: #FFFFFF; } li { cursor: pointer; } </style> <script src="https://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> $(function() { $("li").click(function(a) { $(this).parent().find("li").removeClass("active").find("ul:visible").slideUp(); $(this).children("ul").is(":hidden") && $(this).addClass("active").children("ul").slideDown(); a.stopPropagation() }) }); </script> </head> <body> <ul class='left_nav_menu' id='nav_menu_content'> <li><a href='#0'>Категория_1</a> <ul> <li><a href="#">Подкатегория_1</a> <ul> <li><a href="#">Подподкатегория_1</a></li> </ul> </li> <li><a href="#">Подкатегория_2</a> <ul> <li><a href="#">Подподкатегория_2</a></li> <li><a href="#">Подподкатегория_3</a></li> </ul> </li> <li><a href="#">Подкатегория_3</a> <ul> <li><a href="#">Подподкатегория_4</a></li> <li><a href="#">Подподкатегория_5</a></li> </ul> </li> </ul> </li> <li><a href='#0'>Категория_2</a> <ul> <li><a href="#">Подкатегория_4</a> <ul class="material_cat"> <li><a href="#">Подподкатегория_6</a></li> </ul> </li> </ul> </li> </ul> <ul> <li>Подарки <ul> <li>Сувенирные изделия <ul > <li>Музыкальные</li> <li>Шкатулки</li> <li>Из дерева</li> <li>Металлические</li> </ul> </li> <li>Цветы <ul> <li>Розы <ul > <li>Чайная</li> <li>Махровая</li> <li>Чёрная</li> </ul> </li> <li>Подарочные цветы <ul > <li>Гвоздика</li> <li>Лилия</li> <li>Орхидея</li> </ul> </li> </ul> </li> </ul> </li> </ul> </body> </html> |
рони,
Спасибо за ответ, но не совсем то, что нужно. Нужно, чтобы класс active был только у одного элемента li, того, по которому кликнул юзер. "Чайная", "Махровая" и т.п. тоже должны иметь класс active, если по ним кликнули. |
Часовой пояс GMT +3, время: 11:52. |