Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.10.2012, 02:59
Новичок на форуме
Отправить личное сообщение для notgosu Посмотреть профиль Найти все сообщения от notgosu
 
Регистрация: 30.10.2012
Сообщений: 4

Вертикальное меню - аккордеон. Проблема.
Доброго времени суток, ув. форумчане!
Заранее скажу, что с js я еще на "Вы", поэтому вопросы могут показаться глупыми.
Суть вопроса следующая. Есть меню в виде списка:
<ul class="dropdown dropdown-horizontal" id="yw1">
<li class="first"><a href="/">Каталог</a></li>
<li class=" dir"><a href="/about">О нас</a>
<ul>
<li class="first"><a href="/about/news">Новости</a></li>
<li><a href="/about/articles">Статьи</a></li>
<li class="last"><a href="/about/contact">Контакты</a></li>
</ul>
</li>
<li class=" dir"><a href="/cooperation">Сотрудничество</a>
<ul>
<li class="first"><a href="/cooperation/optovim">Оптовым клиентам</a></li>
<li><a href="/cooperation/supliers">Поставщикам</a></li>
<li><a href="/cooperation/proizvoditeli">Производители</a></li>
<li class="last"><a href="/cooperation/partners">Наши партнеры</a></li>
</ul>
</li>
<li class=" dir"><a href="/howtobuy">Как купить</a>
<ul>
<li class="first"><a href="/howtobuy/payment">Оплата</a></li>
<li><a href="/howtobuy/delivery">Доставка</a></li>
<li class="last"><a href="/howtobuy/refund">Возврат и обмен</a></li>
</ul>
</li>
<li class="last dir"><a href="/service">Cервис</a>
<ul>
<li class="first"><a href="/service/install">Установка</a></li>
<li><a href="/service/warranty">Гарантийное обслуживание</a></li>
<li class="last"><a href="/service/maintenance">Информация по уходу</a></li>
</ul>
</li>
</ul>

Как видно, элементы меню, имеющие вложенность имеют класс "dir". Задача - при клике на такие элементы сворачивать/разворачивать вложенную часть, но при этом не переходить по ссылке пункта меню.
Пробую с помощью JQuery cледующее:
$(document).ready(function() {
                                $("ul.dropdown li.dir a").click(function(){
                                    $(this).parent().find("li").slideToggle("slow");
                                    
                                });
                                });

При клике на элемент меню, вложенные элементы пытаются свернуться, но происходит переход по ссылке. Ссылки есть у каждого элемента и, к сожалению, их заменить на # нельзя.
Пробовал в скрипт после slideToggle("slow"); добавить:
return false;

При этом вложенное меню сворачивается/разворачивается но перейти по ссылкам вложенных элементов невозможно.

Подскажите, будь-те так добры, что добавить, чтобы можно было оперировать вложенными ссылками?
Заранее спасибо за ответы!
Ответить с цитированием
  #2 (permalink)  
Старый 30.10.2012, 05:16
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 12.04.2012
Сообщений: 49

Нужно добавить >
$(function () {
  $("ul.dropdown li.dir > a").click(function(){
    $(this).next("ul").slideToggle("slow");
    return false;
  });
});

Последний раз редактировалось NikolasGrad, 30.10.2012 в 05:40.
Ответить с цитированием
  #3 (permalink)  
Старый 30.10.2012, 09:51
Новичок на форуме
Отправить личное сообщение для notgosu Посмотреть профиль Найти все сообщения от notgosu
 
Регистрация: 30.10.2012
Сообщений: 4

Сообщение от NikolasGrad Посмотреть сообщение
Нужно добавить >
$(function () {
  $("ul.dropdown li.dir > a").click(function(){
    $(this).next("ul").slideToggle("slow");
    return false;
  });
});
Все получилось! Большое спасибо! +
Ответить с цитированием
  #4 (permalink)  
Старый 30.10.2012, 17:04
Новичок на форуме
Отправить личное сообщение для notgosu Посмотреть профиль Найти все сообщения от notgosu
 
Регистрация: 30.10.2012
Сообщений: 4

Копаюсь дальше.
1)Нужно, чтобы при открытии страницы, все вложенные меню были свернутыми. Вроде бы сделал, но появилась проблема:
при клике по пункту меню, который имеет внутри себя еще вложенные меню, сначала раскрываются все вложенные меню(буквально за долю секунды), а потом сразу сворачиваются. Т.е. проявляется неприятный глазу баг.
Пример тут:
http://jsfiddle.net/UCkRv/
Кликаем по "Сантехника" и все вложенные меню на долю секунды раскрываются, а потом сворачиваются обратно.

2) Сразу же в догонку хочу поинтересоваться как сохранять положение скрытых/развернутых элементов при переходе на другие страницы. Про jquery.cookies читал, но не совсем понял - что именно будем заносить в куки? Текущие CSS для свернутых/развернутых блоков?

За любую помощь заранее благодарен!
Ответить с цитированием
  #5 (permalink)  
Старый 23.01.2013, 03:40
Интересующийся
Отправить личное сообщение для yurik417 Посмотреть профиль Найти все сообщения от yurik417
 
Регистрация: 31.08.2011
Сообщений: 17

Вот раздвигающееся меню на jQuery точно с такой структурой как вам надо http://masscode.ru/index.php/k2/item/51-liharmonica
Ответить с цитированием
  #6 (permalink)  
Старый 23.01.2013, 11:47
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от notgosu
хочу поинтересоваться как сохранять положение скрытых/развернутых элементов при переходе на другие страницы.
Вот есть решение похоэей задачки Проблема с автоскрытием элементов навигации
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многоуровневое вертикальное меню chuser jQuery 0 13.05.2012 23:56
меню в стиле аккордеон из таблицы chdn Элементы интерфейса 1 10.11.2011 21:15
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36
Программа Sothink DHTML. Проблема с выпадающем меню в Opere и Мозила. wertor Javascript под браузер 1 27.01.2010 17:19
Проблема с меню для кнопки в Гриде progi2007 ExtJS 0 03.08.2009 14:16