我们使用以下内容对div进行动画处理,然后在mouseout上恢复其原始状态。

一切正常,但是直到我们将鼠标悬停在div上第二次时,mouseout才会触发。之后,它可以完美运行。

$('#navigation-captions>li>a')
.hover(function(){
    if(!$(this).next().is(".open")) {
    $(this).next().css({'visibility' : 'visible'}).animate({opacity: 1}, 150).addClass('open')
    }else if ($(this).next().is(".open")) {
    $('#navigation-captions>li>a').mouseout(function(){
    $(this).next().stop().animate({opacity: 0}, 150, function(){$(this).next().css({'visibility' : 'hidden'})}).removeClass('open')
})}})


在此先感谢您的帮助!

最佳答案

这对您的情况有用吗?

$('#navigation-captions>li>a').hover(function() {
    $(this).next().css({'visibility' : 'visible'}).stop().animate({opacity: 1}, 150).addClass('open');
}).mouseout(function() {
    $(this).next().stop().animate({opacity: 0}, 150, function(){
        $(this).next().css({'visibility' : 'hidden'}).removeClass('open')
    })
});


该活动将始终在第一时间进行。除去if块,可以使代码更整洁,并减少进入不一致状态的可能性。

另外,如果您的jQ版本支持,建议您使用on()。

$('#navigation-captions>li>a').on('hover', function() {
    $(this).next().css({'visibility' : 'visible'}).stop().animate({opacity: 1}, 150).addClass('open');
}).on('mouseout', function() {
    $(this).next().stop().animate({opacity: 0}, 150, function(){
        $(this).next().css({'visibility' : 'hidden'}).removeClass('open')
    })
});

关于javascript - jQuery mouseout动画仅在第二次悬停后触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20619486/

10-09 23:08