在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