Jquery mouseleave/mouseout и z-индекс

у меня такая навигация:

<ul>
   <li><a href='#'>Menu title 1</a>
      <ul>
         <li><a href='#'>Submenu title 1</a></li>
         <li><a href='#'>Submenu title 2</a></li>
         <li><a href='#'>Submenu title 3</a></li>
      </ul>
   </li>
   <li><a href='#'>Menu title 2</a>
      <ul>
         <li><a href='#'>Submenu title 1</a></li>
         <li><a href='#'>Submenu title 2</a></li>
         <li><a href='#'>Submenu title 3</a></li>
      </ul>
   </li>
...

затем с помощью jquery я устанавливаю z-index для зависшего элемента меню выше, чем для подменю, и исчезаю в элементе подменю. Таким образом, наведенный элемент меню виден над подменю, а все остальные пункты меню находятся под подменю.

Теперь мне нужно установить событие мыши для подменю - mouseleave => скрыть подменю. Проблема: поскольку пункт меню теперь находится над подменю - если мышь остается над подменю, но наводит курсор на пункт меню 1, jquery понимает это как выход мыши для подменю

Это очень распространенная проблема для меня, я всегда использую какие-то «читы», но я думаю, что должно быть простое решение.

Я не предоставляю полный исходный код, но я не прошу у вас рабочий код, мне просто нужна идея. Надеюсь на помощь, спс.

введите здесь описание изображения


person Sobakinet    schedule 22.08.2012    source источник
comment
где ваш код Javascript?   -  person Danny G    schedule 22.08.2012
comment
Поможет ли это? Это мое решение этой распространенной проблемы: stackoverflow.com/questions/12024666/   -  person Denys Séguret    schedule 22.08.2012
comment
Dystroy, спасибо, но это то, что я назвал читами, и я ищу какое-нибудь простое решение. Все остальные: js довольно прост - mouseenter - показать подменю, mouseleave - скрыть подменю. Все остальное касается установки и отключения классов для визуализации.   -  person Sobakinet    schedule 22.08.2012


Ответы (2)


Вот один из способов настроить это с помощью чистого CSS:

http://jsfiddle.net/mblase75/nr8xZ/

Хитрость заключается в применении стилей :hover к подменю, которые отображают их только при наведении курсора на элемент списка. Поскольку подменю также является частью родительского элемента списка, оно отображается до тех пор, пока указатель мыши находится над подменю. И вы по-прежнему можете добавить дополнительные интерактивные элементы jQuery/JavaScript к ссылкам и/или элементам списка, если это необходимо.

person Blazemonger    schedule 22.08.2012

Используйте меню pureCSS, которые более эффективны и не содержат JS. вы можете использовать этот редактор для создания вашего меню pureCSS онлайн.

http://purecssmenu.com/

Кроме того, это руководство объясняет основы меню на чистом CSS.

http://meyerweb.com/eric/css/edge/menus/demo.html

Если вам нужно решение с JQuery и CSS с эффектами, этот туториал вам поможет.

http://www.instantshift.com/2010/07/16/create-simple-dropdown-menu-using-jquery/

Надеюсь это поможет.

person User 99x    schedule 22.08.2012
comment
пожалуйста, проверьте измененный ответ для ссылки на учебник. Я использовал этот учебник для разработки своих веб-сайтов на начальных этапах, и теперь я так часто использую меню pureCSS. надеюсь, это решит ваши проблемы. - person User 99x; 22.08.2012