在jQuery代码中放置clearQueue的位置

我有以下代码:

$("#myDiv").hover( function () { $(this).clearQueue().animate({ backgroundColor: "#d7df23", opacity: 0.95 }, 250).find(".thumb").clearQueue().animate({ backgroundColor: "#FFF" }, 250).attr('src','myIMG.jpg'); $(this).next("div").clearQueue().fadeIn(150); // THIS MAY BE WHERE THE PROBLEM IS... }, function () { $(this).clearQueue().animate({ backgroundColor: "#222", opacity: 0.90 }, 250).find(".thumb").clearQueue().animate({ backgroundColor: "#000" }, 250).attr('src','https://stackoverflow.com/questions/9365205/where-to-put-clearqueue-in-jquery-code/myIMGup.jpg'); $(this).next("div").clearQueue().fadeOut(500); // THIS ALSO MAY BE WHERE THE PROBLEM IS... } ); 

hoverfunction的第一部分工作正常,但只要我需要对下一个div做任何事情我就会遇到问题。 如果您在移动鼠标之前等待动画完成,则上面的代码可以正常工作,但是如果您在动画完成之前鼠标移开,则下一个div会消失,我根本无法显示它。

有任何想法吗? 我想这可能与我所有的clearQueue有关…

编辑:

示例HTML:

  

The Header

Popup Header...

Blah Blah Blah...

我认为你正在寻找停止(真实,真实)或停止(真实,虚假),这取决于你是否想让你的动画流畅……

参考: http : //api.jquery.com/stop/

希望这会有所帮助

新的答案:使用此隐藏:

 $(this).next("div").stop(true).animate({opacity:0}); 

这表明:

 $(this).next("div").stop(true).animate({opacity:1}); 

代替fadeIn()和fadeOut()

当你使用fadeIn / fadeOut时,jQuery会记住不透明度的开始,因为你正在停止动画,你正在“干扰”fadeIn / fadeOut以转到停止的不透明度

希望这会有所帮助

MOAR ANSWER !! 1!

如果你还需要实际的“隐藏”,例如。 .display设置为'none'

像这样用它:

 $(this).next("div").stop(true).show().animate({opacity:1}); 

 $(this).next("div").stop(true).animate({opacity:0}, function() { $(this).hide() }); 

如果我这样做,我会很好地包装它:

 $.fn.myFade = function(fadeIn) { return this .stop(true) .show() .fadeTo('fast', +!!fadeIn, function() { !fadeIn && $(this).hide(); }); }; $(this).next("div").myFade(true); // show $(this).next("div").myFade(false); // hide 

完全运行的演示动作激活: http : //jsbin.com/isumiw

希望这有助于lol -ck