Прослушиватель Javascript не срабатывает, если до окончания анимации jquery .slideDown()

простой надеюсь!

У меня проблема в том, что у меня есть ('itemID').mouseover, который запускает анимацию скольжения jquery для окна меню. Проблема в том, что если мышь покидает исходный элемент (в данном случае текстовую ссылку) до окончания аминирования slideDown(), функция .mouseleave не вызывается.

В остальном работает нормально!!

Вот что я использую: (menu14 — текстовая ссылка, FunctionsMenu3 — скрытый div, содержащий пункты меню)

$('#menu14').mouseover(function() {
   $('#FunctionsMenu3').slideDown('fast', function() {
    // Animation complete.
  });
});

$('#FunctionsMenu3').mouseleave(function() {
   $('#FunctionsMenu3').slideUp('fast', function() {
    // Animation complete.
  });
});

Мне кажется, что JS НЕ МОЖЕТ быть запущен, потому что он занят созданием слайдов... сайт можно увидеть по адресу http://www.impero-classroom-management.com заранее спасибо!!


person Baron Von Peter Wright    schedule 12.03.2012    source источник
comment
mouseleave только для IE (хотя это исправлено jQuery). Вы уже пробовали использовать конструкцию hover? См.: api.jquery.com/hover.   -  person m90    schedule 12.03.2012


Ответы (2)


При выходе из мыши попробуйте .stop() отменить текущую анимацию.

$('#menu14').hover(
  function() {
   $('#FunctionsMenu3').slideDown('fast');
  },
  function() {
   $('#FunctionsMenu3').stop().slideUp('fast');
  }
);
person Christoph    schedule 12.03.2012
comment
Привет Кристоф! Это ближе к тому, что я хочу, это работает на 99%, однако, если я наведу курсор, а затем быстро уйду, в следующий раз div будет скользить только до высоты, на которой он был отменен! То есть, если я завис, а затем ушел, когда он опустился, скажем, на полпути, он полностью закроется, но в следующий раз он упадет только до этого уровня... Как странно! - person Baron Von Peter Wright; 12.03.2012
comment
Иметь stop() для обеих функций - person Straseus; 10.04.2012

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

не исправление, но это было все, что я действительно мог сделать!!

$('#FunctionsMenu5').mouseleave(function() {
   $('#FunctionsMenu5').slideUp('fast', function() {
    // Animation complete.
  });
});
$('#menu15').mouseover(function() {
   $('#FunctionsMenu5').show();
});
person Baron Von Peter Wright    schedule 10.04.2012