我知道有一些类似的问题,但我正在尝试他们的解决方案,它不适合我。冻结动画/阻止回放动画悬停弹出
如何在下面停止回拨动画,一旦点击了#hitbox
?在动画中,当#hitbox
悬停在div上将向外移动,并且当鼠标离开#hitbox
时,div将移回原始位置。我想的div留在自己的外侧的位置#hitbox
被点击,而不是移动回来后,。
var timeOut;
$('#hitbox').hover(
function() {
clearTimeout(timeOut);
// **some animation functions moving divs outward** e.g.:
$('#div').stop().animate(
{
'margin-left': '-500px',
}, 1000, 'easeOutQuart'
);
} // End first function
,
function() {
timeOut=setTimeout(function(){
// **some animation functions moving divs back in** e.g.:
$('#div').animate(
{
'margin-left':'0px',
}, 900, 'easeOutExpo' );
}, 600); //end setTimeout
} //end second callback function
); //end hover
$('#hitbox').click(function() {
$('#hitbox').css(
{'display': 'none',
});
clearTimeout(timeOut); // *****NOT WORKING*****
}); // end click
一旦#hitbox
被点击,div一定向上移动,但它们会收缩(回迁向内),当我希望他们留在他们的外部位置。
clearTimeout(timeOut);
不像其他一些问题中建议的那样工作。我有一种感觉,我需要比这更多的东西?正如你在代码中看到的那样,我也尝试立即将#hitbox
的显示设置为none
。 感谢您的帮助!
在我的悬停方法的第二处理程序,我会在哪里放置“timeOut = setTimeout(function(){”? – LazerSharks
@ShaltNot你应该完全放弃超时,因为你并不需要它。如果你想延迟这个动作,只需在你的方法链上添加'.delay(600)'。我已经添加了这个答案。 –
啊。我也只是尝试在if()函数之前添加timeOut,并且它工作正常!我也会测试延迟()。谢谢!!这个问题以前没有收到答案。 – LazerSharks