Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Выпадающее меню на jquery (https://javascript.ru/forum/project/35217-vypadayushhee-menyu-na-jquery.html)

рони 03.02.2013 23:04

Выпадающее меню на 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 04.02.2013 00:29

рони,
код покороче, но имхо постольку, поскольку у Вас кликабельных ссылок нема

рони 04.02.2013 01:10

Цитата:

Сообщение от Deff
поскольку у Вас кликабельных ссылок нема

а можно кодом чего нема?

Deff 04.02.2013 01:30

Цитата:

Сообщение от рони
а можно кодом чего нема?

Вот
Цитата:

<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="view_cat.php?...">Подподкатегория_1</a></li>
</ul>
</li>

рони 04.02.2013 01:39

Deff, всё одно непонимаю как это увеличивает или уменьшает код открытия закрытия

Deff 04.02.2013 01:45

Цитата:

Сообщение от рони
всё одно непонимаю как это увеличивает или уменьшает код открытия закрытия

Забить(Там структура получается чуть длиннее для подготовки распарса массива объектов и сохранения в куки

join 18.11.2013 01:21

Элегантное решение. Красиво.

AMSPeople 11.08.2015 13:57

Други, спасибо за код. Но не могли бы вы его дополнить таким образом, чтобы добавлялся класс 'active' к выбранному пункту меню? Спасибо.

рони 11.08.2015 14:52

Выпадающее меню на 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>

AMSPeople 11.08.2015 15:20

рони,
Спасибо за ответ, но не совсем то, что нужно.
Нужно, чтобы класс active был только у одного элемента li, того, по которому кликнул юзер. "Чайная", "Махровая" и т.п. тоже должны иметь класс active, если по ним кликнули.


Часовой пояс GMT +3, время: 09:05.