javascript - jQuery mouseout 动画仅在第二次悬停后触发

标签 javascript jquery css

我们使用以下代码在悬停时为 div 设置动画,然后在鼠标移开时动画回到其原始状态。

一切正常,但是在我们第二次将鼠标悬停在 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 block ,使代码更清晰,并不太可能进入不一致状态。

此外,如果您的 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/

相关文章:

javascript - 将鼠标事件绑定(bind)到动态创建的选择

javascript - 如何根据 className 删除 fullCalendar 上的事件

html - 可折叠物在同一行 Bootstrap

javascript - window.open 使用 Chrome 的行为改变

javascript - Visual Studio 2017 中的 React 项目

javascript - AngularJS 中复选框的 ng-checked 事件

javascript - 网页之间的数据交易

html - 各种尺寸的图像网格

html - 某些分辨率的网页布局中的线条

javascript - 如何通过单击创建的卡片在卡片内创建输入字段?