$(".a").animate(
{"left":"100%"},
{duration:10000, complete:function(){
//Something is triggered!! e.g
alert("a");
//Please note: In actual case it is never as simple as alert("a").
}}
);
$(".b").mouseover(function(){
$(".a").stop().animate({"top":"100px"},{duration:5000});
});
根据这些,.a
只要.b
就会停止
mouseover
- ed和animate({"top":"100px"},{duration:5000})
会
被触发。
但是当alert("a")
为.b
时,我希望mouseover
一次
然后触发animate({"top":"100px"},{duration:5000})
。
$(".b").mouseover(function(){
//something happens! e.g
alert("a");
$(".a").stop().animate({"top":"100px"},{duration:5000});
});
alert("a")
为.b
mouseover
,那么.a
两次
animate
。stop()
的{{1}}并且它不理想每当jumpToEnd parameter
为.b
时,mouseover
的{{1}}即时完成,.a
将转移到animte
。我希望它.a
位于left:100%
,而stop
在第二次alert("a")
被触发之前
如果有人可以为此提供快速简便的解决方案,我将非常感激!
答案 0 :(得分:1)
您可以通过对:animated
进行过滤来检查元素当前是否为动画。
$('.b').mouseover(function () {
// if NOT animating, then terminate
if (!$('.a').is(':animated')) { return; }
// carry on
});
答案 1 :(得分:1)
$(".a").animate(
{"left":"100%"},
{duration:10000, complete:myAfterWork} // Use the function name only
);
$(".b").mouseover(function(){
myAfterWork();
$(".a").stop().animate({"top":"100px"},{duration:5000});
});
function myAfterWork()
{
if($(".a").is(":animated"))
{
//Access $(".a") here and do your job
//Note if you use $(this) in place of $(".a") it will be different
//when called from .a's animation than from .b's animation
}
}