Javascript 动画不';不要在悬停时淡入

Javascript 动画不';不要在悬停时淡入,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在尝试为我的边栏制作悬停效果。但由于某些原因,如果我在侧边栏上停留太多,侧边栏中的元素不会消失。 您可以在此处看到正在运行的测试版: 要淡入,必须将元素视为:隐藏。因此,如果在逐渐淡出时悬停,jQuery将不会淡出,因为元素是可见的 有两种解决方案。第一种方法是使用.stop(true,true)。使用true作为参数意味着“清除队列并跳转到末尾”,元素将隐藏在fadeIn()之前 但我最喜欢的解决方案是使用fadeTo(): 奖金 这里为您提供了一个更可读的代码: var $sideba

我正在尝试为我的边栏制作悬停效果。但由于某些原因,如果我在侧边栏上停留太多,侧边栏中的元素不会消失。 您可以在此处看到正在运行的测试版:


要淡入,必须将元素视为
:隐藏
。因此,如果在逐渐淡出时悬停,jQuery将不会淡出,因为元素是可见的

有两种解决方案。第一种方法是使用
.stop(true,true)
。使用true作为参数意味着“清除队列并跳转到末尾”,元素将隐藏在
fadeIn()
之前

但我最喜欢的解决方案是使用
fadeTo()

奖金 这里为您提供了一个更可读的代码:

var $sidebar = $('#sidebar'),
    $icons = $sidebar.find('.icon'),
    $otherObj = $sidebar.find('#logo, #nav, .quote, .branding')

$('#sidebar').hover(function(){
    $sidebar.stop().animate({ 'width': '200px'}, 500)
    $icons.stop().fadeOut()
    $otherObj.stop().fadeIn();
}, function(){
    $sidebar.stop().animate({ 'width': '40px'}, 500)
    $icons.stop().fadeIn().done(function(){ $(this).removeClass('flipped');})
    $otherObj.stop().fadeOut();
});

要淡入,必须将元素视为
:隐藏
。因此,如果在逐渐淡出时悬停,jQuery将不会淡出,因为元素是可见的

有两种解决方案。第一种方法是使用
.stop(true,true)
。使用true作为参数意味着“清除队列并跳转到末尾”,元素将隐藏在
fadeIn()
之前

但我最喜欢的解决方案是使用
fadeTo()

奖金 这里为您提供了一个更可读的代码:

var $sidebar = $('#sidebar'),
    $icons = $sidebar.find('.icon'),
    $otherObj = $sidebar.find('#logo, #nav, .quote, .branding')

$('#sidebar').hover(function(){
    $sidebar.stop().animate({ 'width': '200px'}, 500)
    $icons.stop().fadeOut()
    $otherObj.stop().fadeIn();
}, function(){
    $sidebar.stop().animate({ 'width': '40px'}, 500)
    $icons.stop().fadeIn().done(function(){ $(this).removeClass('flipped');})
    $otherObj.stop().fadeOut();
});

要淡入,必须将元素视为
:隐藏
。因此,如果在逐渐淡出时悬停,jQuery将不会淡出,因为元素是可见的

有两种解决方案。第一种方法是使用
.stop(true,true)
。使用true作为参数意味着“清除队列并跳转到末尾”,元素将隐藏在
fadeIn()
之前

但我最喜欢的解决方案是使用
fadeTo()

奖金 这里为您提供了一个更可读的代码:

var $sidebar = $('#sidebar'),
    $icons = $sidebar.find('.icon'),
    $otherObj = $sidebar.find('#logo, #nav, .quote, .branding')

$('#sidebar').hover(function(){
    $sidebar.stop().animate({ 'width': '200px'}, 500)
    $icons.stop().fadeOut()
    $otherObj.stop().fadeIn();
}, function(){
    $sidebar.stop().animate({ 'width': '40px'}, 500)
    $icons.stop().fadeIn().done(function(){ $(this).removeClass('flipped');})
    $otherObj.stop().fadeOut();
});

要淡入,必须将元素视为
:隐藏
。因此,如果在逐渐淡出时悬停,jQuery将不会淡出,因为元素是可见的

有两种解决方案。第一种方法是使用
.stop(true,true)
。使用true作为参数意味着“清除队列并跳转到末尾”,元素将隐藏在
fadeIn()
之前

但我最喜欢的解决方案是使用
fadeTo()

奖金 这里为您提供了一个更可读的代码:

var $sidebar = $('#sidebar'),
    $icons = $sidebar.find('.icon'),
    $otherObj = $sidebar.find('#logo, #nav, .quote, .branding')

$('#sidebar').hover(function(){
    $sidebar.stop().animate({ 'width': '200px'}, 500)
    $icons.stop().fadeOut()
    $otherObj.stop().fadeIn();
}, function(){
    $sidebar.stop().animate({ 'width': '40px'}, 500)
    $icons.stop().fadeIn().done(function(){ $(this).removeClass('flipped');})
    $otherObj.stop().fadeOut();
});

尝试
.stop(true,true)
您确实应该缓存jQuery变量,每次调用
$(“#侧边栏”)
时,您都在执行可能代价高昂的DOM查找。试试
var$sidebar=$('#sidebar')然后你可以使用:
$sidebar.find('.nav')…
等等@zachsauier谢谢你,真正的参数是有效的!非常感谢您的回答。@RobM我不知道它是这样工作的。感谢这一伟大的技巧,我将在我未来的项目中使用它。尝试
。停止(true,true)
你真的应该缓存你的jQuery变量,每次调用
$(“#侧边栏”)
你都在执行一个可能很昂贵的DOM查找。试试
var$sidebar=$('#sidebar')然后你可以使用:
$sidebar.find('.nav')…
等等@zachsauier谢谢你,真正的参数是有效的!非常感谢您的回答。@RobM我不知道它是这样工作的。感谢这一伟大的技巧,我将在我未来的项目中使用它。尝试
。停止(true,true)
你真的应该缓存你的jQuery变量,每次调用
$(“#侧边栏”)
你都在执行一个可能很昂贵的DOM查找。试试
var$sidebar=$('#sidebar')然后你可以使用:
$sidebar.find('.nav')…
等等@zachsauier谢谢你,真正的参数是有效的!非常感谢您的回答。@RobM我不知道它是这样工作的。感谢这一伟大的技巧,我将在我未来的项目中使用它。尝试
。停止(true,true)
你真的应该缓存你的jQuery变量,每次调用
$(“#侧边栏”)
你都在执行一个可能很昂贵的DOM查找。试试
var$sidebar=$('#sidebar')然后你可以使用:
$sidebar.find('.nav')…
等等@zachsauier谢谢你,真正的参数是有效的!非常感谢您的回答。@RobM我不知道它是这样工作的。谢谢你给我这个好建议,我会在我未来的项目中使用它。谢谢,第二种方法确实更好。谢谢,第二种方法确实更好。谢谢,第二种方法确实更好。谢谢,第二种方法确实更好。