我有一个按钮,在悬停时会淡化div。 如果我将鼠标悬停在一个按钮上,然后将鼠标悬停在快速连续多次重复该过程然后将其悬停,则div将在应该停止时继续动画。 请参阅以下代码段。
http://jsfiddle.net/arvinboggs/uenEQ/9/
有没有办法纠正这种行为?
有没有办法在最终悬停时停止动画?
答案 0 :(得分:2)
是的。您需要.stop()
再次.animate()
:http://www.learningjquery.com/2009/01/quick-tip-prevent-animation-queue-buildup。否则,您将构建一个必须出列的动画队列。
答案 1 :(得分:1)
从我以前的答案剪切并粘贴到类似的问题:
我实际创建了一个'state'变量,以确保任何时候只能触发1个动作。
我的工作是
set state = 0; when I initialise the page
check if state == 0 when something is clicked
if it's 0, then I set it to 1 (meaning something's happening)
run the animation
once the animation is complete, I reset the state to 0
实际上,你只能触发动画事件状态== 0然后没有重叠。
所以要回答你的问题,当你绑定()悬停时,它需要检查是否允许根据状态设置触发动画。
var hoverState = 0;
$('.myLink').bind('mouseenter'), function(){
myHoverCode();
});
function hoverCode(){
if(hoverState == 0){
hoverState = 1; // bind this hover state so we can't trigger it again
// do my animation
$('#someElement').animate({
},100, function(){
// animation complete
hoverState = 0; // reset the hover state
});