Ваша задержка абсолютно ничего не делает, потому что она связана с селектором jQuery, а не с функцией в обработчике mouseout
.
Попробуйте вместо этого ...
jQuery('.right-et-tooltip').mouseout(function(){
jQuery(this).find('.right-et-tooltip-box').delay(800).animate({ opacity: 'hide', left: '-100px' }, 30);
});
Ваш jsFiddle с примененной коррекцией ...
http://jsfiddle.net/zGtBN/2/
РЕДАКТИРОВАТЬ (примечание):
Было бы гораздо лучше использовать методы mouseenter
& mouseleave
, а не методы mouseover
& mouseout
, которые обычно вызывают быстрое мигание во время зависания мыши.
Затем вы можете просто объединить обработчики mouseenter
и mouseleave
в один, используя метод jQuery .hover()
.
Здесь точно такие же две функции, введенные в метод .hover()
...
http://jsfiddle.net/zGtBN/3/
РЕДАКТИРОВАТЬ 2:
При повторном вводе до завершения анимации выхода анимации будут поставлены в очередь. Если вы входите и выходите очень быстро несколько раз, все анимации будут мигать, пока они не остановятся.
Чтобы предотвратить наложение очереди анимации и создание новой проблемы, в которой она включается / выключается из-за задержки mouseleave
, используйте jQuery .stop(true, false)
для функции mouseenter
, подобной этой ...
jQuery(this).find('.right-et-tooltip-box').stop(true,false).animate({ opacity: 'show', left: '-100px' }, 30);
После mouseenter
он немедленно останавливает любую анимацию mouseleave
. Параметр true
в параметре clearQueue очищает очередь анимации, а параметр false
в параметре jumpToEnd говорит о том, что нужно остановить текущую анимацию вместо немедленного ее завершения.
Модифицированная демка ...
http://jsfiddle.net/zGtBN/4/