#jquery
#jquery
Вопрос:
Итак,
У меня запущен этот демонстрационный сайт:
При наведении курсора мыши на основной заголовок (не в ie). Вы заметите, что изображение немного изменится,
Это то, чего я хочу.
Однако проницательный глаз заметит, что при наведении курсора мыши вкл-выкл-вкл-выкл-вкл-выкл события будут поставлены в очередь.
Как мне остановить это поведение?
Ответ №1:
jQuerys .stop()
приходит на помощь.
$('#element').stop(true, true).animate({});
Если вы выполняете какую-либо анимацию с помощью jQuery, stop()
очередь завершится. Первый параметр указывает, следует ли очищать всю очередь, второй параметр указывает, следует ли переходить к концу текущей запущенной анимации.
Другой вариант, который у вас есть здесь, — проверить, анимирован ли элемент в данный момент или нет, и если да, просто пропустите новый .animate
метод. Пример:
$('#element').hover(function(){
if(!$(this).is(':animated'){ // only go in here if $(this) is NOT animated
// $(this).animate({});
}
}, function(){
});
Ссылка.: .stop(), :анимированный
Комментарии:
1. .остановить(true,false). сработало идеально. Моя единственная проблема заключается в том, что после вызова stop (например, при выключенной мыши) это вызывает небольшую задержку. Почему это?
Ответ №2:
Взгляните на этот плагин: http://cherne.net/brian/resources/jquery.hoverIntent.html
hoverIntent — это подключаемый модуль, который пытается определить намерения пользователя… как хрустальный шар, только с движением мыши! Это работает как (и было производным от) встроенного в jQuery hover. Однако, вместо немедленного вызова функции onMouseOver, она ожидает, пока мышь пользователя не замедлится достаточно, прежде чем выполнить вызов.