jQuery: hover (событие mouseleave вызывается, когда мышь находится над дочерним элементом) - PullRequest
0 голосов
/ 16 января 2011

Я хочу создать эффект масштабирования на некоторых пальцах.

Вот мой упрощенный код javascript:

parent.hover(
 function(){
   parent.stop().animate({/* css */}, inputZoomDuration, "linear");
   wrapper.stop().animate({/* css */}, inputZoomDuration, "linear");
   child.stop().animate({/* css */}, inputZoomDuration, "linear");
 },
 function(){
  alert("leave");
  child.stop().animate({/* css */}, 140, "linear");
  wrapper.stop().animate({/* css */}, 140, "linear");
  parent.stop().animate({/* css */}, 140, "linear");
 }
);

, а HTML-код выглядит так:* Я увеличиваю размер всех моих div'ов, когда я над «родителем».Но как только я заканчиваю (или оставляю, между прочим) одного из детей, появляется предупреждение.Без предупреждения результат - очень глючная анимация.Есть ли способ предотвратить запуск события отпускания мыши, когда ребенок перебарелся?

С уважением,

спасибо.

Редактировать: Здесьэто скрипт greasemonkey: http://userscripts.org/scripts/show/94786 и ссылка для его проверки: http://browse.deviantart.com/ В консоли видно, что событие mouseleave запускается, когда я покидаю оранжевый div, в отличие от этого примера: http://www.jsfiddle.net/wnuS6/3/, когда событие не запускается, когда я покидаю красный div.

Ответы [ 2 ]

2 голосов
/ 16 января 2011

Изменить событие с .hover() на .mouseenter(). Это гарантирует, что он останется активным до тех пор, пока вы не покинете родительскую область div, которую вы можете обнаружить с помощью события mouseleave(). http://api.jquery.com/mouseenter/ - http://api.jquery.com/mouseleave/

1 голос
/ 19 января 2011

После некоторых исследований кажется, что проблема связана с greasemonkey. Вот что сказал вики:

Некоторые версии jQuery не будут работать внутри песочницы Greasemonkey. По состоянию на это написание 1.3.2 работает, но 1.4.1 нет. Возможно исправление 1.4 версий jQuery для работы, см. Форум jQuery: импорт jQuery 1.4.1 в скриптах greasemonkey выдает ошибку

Однако все версии 1.4.x, исправленные в jQuery, по-прежнему не работают в моем конкретном случае наведения мыши и только с greasemonkey (действительно, я тестирую тот же сценарий в jsFiddle, и он работает с jQuery 1.4.4).

Чтобы решить эту проблему, я просто использую jQuery 1.3.2 (и, конечно, мне нужно немного адаптировать свой код).

...