Почему бы вам просто не скрыть это при добавлении класса, так как fadeOut (0) не имеет анимации
$('#header #menu li a').hover(function () {
$(this).hide().addClass('hover').fadeIn(300);
},
function () {
$(this).hide().removeClass('hover').show();
// as there is no fading time the line above will be equal to
$(this).removeClass('hover');
});
когда вам нужно что-то сделать после завершения анимации, вы должны использовать обратный вызов $(...).fadeIn(400,function(){ alert('this is the callback'); }
, если вы не используете обратный вызов, код запускается во время анимации.
и я не знаю, является ли он полезным, но в css есть псевдокласс :hover
, см. здесь
Поддерживается псевдокласс: hover
во всех основных браузерах.
так что с этим вы можете делать различные вещи, как:
#header #menu li a:hover { ...set style of 'a' when over 'a' }
#header #menu li:hover a { ...set style of 'a' when over 'li' }
просто поиграйте с этим немного, и вы можете многое сделать просто с помощью css