| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Помогите доработать скрипт |
| Автор: ksenaf 6.11.2012, 15:21 |
| Помогите, пожалуйста доработать скрипт. Если нажимаем ссылку Категории, в которой есть подкатегории - они разворачиваются, а в предыдущей открытой категории подкатегории сворачиваются. Но если нажать после этого на Категорию, в которой нет подкатегорий - предыдущая открытая категория не сворачивает подкатегории, а нужно, чтобы сворачивала. Что нужно дописать в скрипте, чтобы это исправить? HTML: <ul id="menu"> <li><a href='##'>Категория 1</a> <ul> <li><a href='#'>- подкатегория 1</a></li> <li><a href='#'>- подкатегория 2</a></li> </ul> </li> <li><a href='#'>Категория 2</a></li> <li><a href='##'>Категория 3</a> <ul> <li><a href='#'>- подкатегория 1</a></li> <li><a href='#'>- подкатегория 2</a></li> </ul> </li> </ul> Скрипт: <script type="text/javascript"> $(document).ready(function() { $('ul#menu ul').each(function(i) { if ($.cookie('submenuMark-' + i)) { $(this).show().prev().removeClass('collapsed').addClass('expanded'); }else { $(this).hide().prev().removeClass('expanded').addClass('collapsed'); } $(this).prev().addClass('collapsible').click(function() { var this_i = $('ul#menu ul').index($(this).next()); if ($(this).next().css('display') == 'none') { $(this).parent('li').parent('ul').find('ul').each(function(j) { if (j != this_i) { $(this).slideUp(200, function () { $(this).prev().removeClass('expanded').addClass('collapsed'); cookieDel($('ul#menu ul').index($(this))); }); } }); // :end $(this).next().slideDown(200, function () { // Show submenu: $(this).prev().removeClass('collapsed').addClass('expanded'); cookieSet(this_i); }); }else { $(this).next().slideUp(200, function () { // Hide submenu: $(this).prev().removeClass('expanded').addClass('collapsed'); cookieDel(this_i); $(this).find('ul').each(function() { $(this).hide(0, cookieDel($('ul#menu ul').index($(this)))).prev().removeClass('expanded').addClass('collapsed'); }); }); } return false; // Prohibit the browser to follow the link address }); }); }); function cookieSet(index) { $.cookie('submenuMark-' + index, 'opened', {expires: null, path: '/'}); } function cookieDel(index) { $.cookie('submenuMark-' + index, null, {expires: null, path: '/'}); } </script> |