Посоветуйте новику, что я делаю не так
Помогите пожалуйста со скриптом.
Есть меню <div id="sidebar"> <ul> <li><a href=#>Категория</a></li> <li><a href=#>Категория</a></li> <li class=submenu><a href=#>Категория</a></li> <!--Если категория имеет подкатегорию, присваиваем класс submenu--> <li class=submenu><a href=#>Категория</a> <ul class=cat> <li><a href=#>ПодКатегория</a></li> <li><a href=#>ПодКатегория</a></li> <li><a href=#>ПодКатегория</a></li> </ul> </li> <li><a href=#>Ссылка</a></li> </ul> </div> Категории и подкатегории. Мне нужно, что бы при загрузке страницы подкатегории были скрыты. В css сделал так #sidebar .submenu .cat { display:none; }, А при клике на любую категорию имеющую подкатегорию нужно развернуть скрытый список. в jquery сделал так $(function () { $('#sidebar ul .submenu').click(function() { var cl=$(this).find('ul').attr("class"); //console.log(cl); if (cl=="cat") { $(this).find('.cat').slideDown('fast').removeClass ('cat').addClass('uncat'); } else { $(this).find('.uncat').slideUp('fast').removeClass ('uncat').addClass('cut'); console.log(cl); } return false; }); Проблема в том, что это скрипт отрабатывает правильно только два раза, когда открываю и когда закрываю подкатегорию. Как ни странно, переменная cl получает каждый раз измененный класс, но почему то я все равно попадаю в условие else. Посоветуйте, что я делаю не так? |
Отформатируйте ваш код, не понятно же ничего.
|
Помогите пожалуйста со скриптом.
Есть меню <div id="sidebar"> <ul> <li><a href=#>Категория</a></li> <li><a href=#>Категория</a></li> <li class=submenu><a href=#>Категория</a></li> <!--Если категория имеет подкатегорию, присваиваем класс submenu--> <li class=submenu><a href=#>Категория</a> <ul class=cat> <li><a href=#>ПодКатегория</a></li> <li><a href=#>ПодКатегория</a></li> <li><a href=#>ПодКатегория</a></li> </ul> </li> <li><a href=#>Ссылка</a></li> </ul> </div> Категории и подкатегории. Мне нужно, что бы при загрузке страницы подкатегории были скрыты. В css сделал так #sidebar .submenu .cat { display:none; }, А при клике на любую категорию имеющую подкатегорию нужно развернуть скрытый список. в jquery сделал так $(function () { $('#sidebar ul .submenu').click(function() { var cl=$(this).find('ul').attr("class"); //console.log(cl); if (cl=="cat") { $(this).find('.cat').slideDown('fast').removeClass('cat').addClass('uncat'); } else { $(this).find('.uncat').slideUp('fast').removeClass('uncat').addClass('cut'); console.log(cl); } return false; }); |
$('li').click(function () { $(this).find('ul').first().slideToggle(); }); При клике на ли ищем внутри ли на который кликнули первый ул и скрываем/раскрываем его. |
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> <div id="sidebar"> <ul> <li><a href=#>Категория</a></li> <li><a href=#>Категория</a></li> <li><a href=#>Категория</a></li> <li><a href=#>Категория</a> <ul> <li><a href=#>ПодКатегория</a></li> <li><a href=#>ПодКатегория</a> <ul> <li><a href=#>ПодКатегория</a></li> <li><a href=#>ПодКатегория</a></li> <li><a href=#>ПодКатегория</a></li> </ul> </li> <li><a href=#>ПодКатегория</a></li> </ul> </li> <li><a href=#>Ссылка</a></li> </ul> </div> <script> $('li').click(function (e) { $(this).find('ul').first().slideToggle(); e.stopPropagation(); return false; }); </script> |
tsigel, по-мне так лучше использовать
http://jquery-docs.ru/Traversing/children/#expr нежели find()... |
Часовой пояс GMT +3, время: 12:56. |