Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Выпадающее меню jQuery
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Выпадающее меню jQuery

Страниц (1): [1]
 

1. Viper - 23 Сентября, 2011 - 08:47:39 - перейти к сообщению
Собстно столкнулся с одной проблемой.
Есть меню вида
CODE (htmlphp):
скопировать код в буфер обмена
  1. root
  2. -node1
  3. -node2
  4. --node2-1
  5. --node2-2
  6. -node3

Все на списках. Вложенный элемент тоже список, если есть потомки. У вложенных списков есть класс .subitem (ul.subitem)
Есть код
CODE (javascript):
скопировать код в буфер обмена
  1. $("li:first").hover(function(){
  2.         $(this).children("ul").slideDown();
  3. }, function(){
  4.         $(this).children("ul").slideUp();
  5.         $(".subitem li a").next("ul").slideUp();
  6. });


Проблема в том что если несколько раз быстро навести мышку на меню, то оно естественно несколько раз показывается/скрывается. Т.е. срабатывает триггер на каждое событие. Выход это поставить timeout? но куда его лепить? Что-то никак не соображу.

PS! Может использовать animate() ?
2. Stasnislav - 23 Сентября, 2011 - 11:16:43 - перейти к сообщению
Можно попробовать вместо hover() использовать mouseover() и mouseout(). Если события будет продолжать выполняться, то использовать еще stop(). Улыбка
3. Viper - 23 Сентября, 2011 - 12:29:10 - перейти к сообщению
Stasnislav с mouseevent то же самое. Уже пробовал. hover() это просто обертка для bind('mouseenter mouseleave').
4. Stasnislav - 23 Сентября, 2011 - 12:57:51 - перейти к сообщению
stop() тоже что-ли не работает? Однако
5. Viper - 23 Сентября, 2011 - 14:49:48 - перейти к сообщению
Stasnislav пишет:
stop() тоже что-ли не работает?
ещё не пробовал. Вечером отпишу о результатах.
6. Viper - 24 Сентября, 2011 - 22:52:35 - перейти к сообщению
Разобрался с меню. Добавил проверку is(":hidden").

Теперь другой баг. Скорее относится к CSS.
http://home[dot]libra[dot]ms/ka/index[dot]ph[dot][dot][dot]0&Itemid=266 пункт меню Using Joomla. Иконка стрелки по непонятной причине съезжает при раскрытии дочерних пунктов меню.

Есть идеи почему?
(Добавление)
Вопрос закрыт.
7. Viper - 28 Сентября, 2011 - 10:15:58 - перейти к сообщению
И снова возник вопрос по этому меню. Приведу структуру для понимания

CODE (html):
скопировать код в буфер обмена
  1. <div id="main_menu">
  2.         <ul class="menu">
  3.                 <li class="item-117 current active"><a href="/ru/" >Главная</a></li>
  4.                 <li class="item-102 deeper parent"><a href="/ru/16.html" >Test 1</a>
  5.                         <ul><!-- К этому ul добавить класс -->
  6.                                 <li class="item-103"><a href="/ru/test2.html" >Test 2</a></li>
  7.                                 <li class="item-104"><a href="/ru/test3.html" >Test 3</a></li>
  8.                                 <li class="item-115"><a href="http://trac.domain.com" >Trac</a></li>
  9.                                 <li class="item-126"><a href="/ru/dev-ru.html" >Вики</a></li>
  10.                                 <li class="item-127 deeper parent"><a href="/ru/downloads-ru.html" >Скачать</a>
  11.                                         <ul>
  12.                                                 <li class="item-128"><a href="/ru/download-16-ru.html" >Скачать 16</a></li>
  13.                                         </ul>
  14.                                 </li>
  15.                         </ul>
  16.                 </li>
  17.                 <li class="item-105 deeper parent"><a href="/ru/10-ru.html" >Test 10</a>
  18.                         <ul><!-- К этому ul добавить класс -->
  19.                                 <li class="item-106"><a href="/ru/10.html" >Описание</a></li>
  20.                                 <li class="item-107"><a href="/ru/10-1.html" >Test 11</a></li>
  21.                                 <li class="item-108"><a href="/ru/dl.html" >Test 12</a></li>
  22.                         </ul>
  23.                 </li>
  24.         </ul>
  25.         </div>


Что нужно - для первого уровня меню добавить класс subitem, т.е. для <ul> помеченных в коде. Нужно только для первого уровня ul(т.е. если есть вложенные ul то не добавлять).

Пытался сделать через
CODE (javascript):
скопировать код в буфер обмена
  1. $("ul.menu li").find("ul:first-child").addClass("subitem");

но вообще не работает. Если
CODE (javascript):
скопировать код в буфер обмена
  1. $("ul.menu li ul").addClass("subitem");
соответственно все вложенные ul с этим классом, что не нужно.

Есть идеи у кого-то, в чем затык?
8. Stasnislav - 28 Сентября, 2011 - 10:28:21 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $("ul.menu > li > ul").addClass("subitem");
  3.  


Цитата:

"parent > child"
элементы из child, которые являются прямыми потомками элементов из parent
9. Viper - 28 Сентября, 2011 - 11:24:15 - перейти к сообщению
Stasnislav спасибо. Тупняк с утра.

 

Powered by ExBB FM 1.0 RC1