Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как заставить mouseover распространяться ещё и на вложенные элементы? (https://javascript.ru/forum/jquery/6863-kak-zastavit-mouseover-rasprostranyatsya-eshhjo-i-na-vlozhennye-ehlementy.html)

sysya 28.12.2009 15:18

Как заставить mouseover распространяться ещё и на вложенные элементы?
 
Опять здрасти :)

Вот hover распространяется на элемент к которому он, так сказать, применяется и на вложенные элементы... А если использовать mouseover то выпадающее меню не правильно работат, вот часть кода:
$(function (){

 $('.drop_menu').live('mouseover', function () { if ($(this).find('ul').css('display') == 'none') $(this).find('ul').slideDown(300) } );
 $('.drop_menu').live('mouseout', function () { if ($(this).find('ul').css('display') != 'none') $(this).find('ul').slideUp(200) } );
});


меню закрывается, когда мышь перемещаешь на список:
<div class="box drop_menu">Пусто<ul><li><a href="#">text</a></li><li>text</li></ul></div>


css:
.drop_menu {
  overflow: hidden;
  cursor: pointer;
}

.drop_menu ul {
  display: none;
  z-index: 1;
  position: absolute;
  list-style: none;
  margin: 0px;
}

.drop_menu ul li a {display: block;}

sysya 29.12.2009 12:09

Хоть пошлите меня в правильном направлении куда нить кто нить, почитать чё нить...

micscr 29.12.2009 12:21

Используйте:
mouseenter
mouseleave

sysya 29.12.2009 14:04

Цитата:

Сообщение от micscr (Сообщение 39500)
Используйте:
mouseenter
mouseleave

Не могу найти описание этих событий, мож адресок есть?

sysya 29.12.2009 14:54

Какое никакое но всё таки нашёл описание:

Microsoft создали 2 новых события mouseenter и mouseleave. Эти события имеют такое же поведение как mouseover и mouseout. Единственно отличие - это то, что события не "перепрыгивают" на дочерние элементы.

sysya 29.12.2009 15:23

Меню теперь нормально работает (IE7, Chrome и Opera1010), заменил строчку:
$('.drop_menu').live('mouseout', function () { if ($(this).find('ul').css('display') != 'none') $(this).find('ul').slideUp(200) } );

На эту:
$('.drop_menu').live('mouseleave', function () { if ($(this).find('ul').css('display') != 'none') $(this).find('ul').slideUp(200) } );


Но работает на новом Jquery 1.4a2, на 1.3 молчит :)

micscr 29.12.2009 15:26

mouseenter
mouseleave

P.S. jQuery 1.3.2


Часовой пояс GMT +3, время: 10:35.