1

假设我有这个

$(".a").animate(
        {"left":"100%"},
        {duration:50000, complete:function(){
             $(".a").css("background-color","black");
        }}
);

$(".b").mouseover(function(){
        $(".a").stop();
});

当-ed 时,.b将因此不会被触发....mouseover.astop()complete:event

即使它停止它complete:event会被触发,我应该怎么做?

有没有比这更好的解决方案?

function aaa(){
   $(".a").css("background-color","black");
 }    

$(".a").animate(
        {"left":"100%"},
        {duration:50000, complete:function(){
            aaa();
        }}
);

$(".b").mouseover(function(){
        $(".a").stop();
        aaa();
});

[更新] 这就是我的代码的实际样子,抱歉没有早点显示...

$(".a").animate(
        {"left":"100%"},
        {duration:50000, complete:function(){
             alert("A");
        }}
);

$(".b").mouseover(function(){
        $(".a").stop().animate(
             {"top":"100%"}
        )
});

我只想alert("A")被执行一次..但我不会阻止用户mouseover-ing .bwhich stop .a..

如果我要这样写.b鼠标悬停:

$(".b").mouseover(function(){
        $(".a").stop().animate(
             {"top":"100%"}
             {complete:function(){
                  alert("A");
             }}            
        )
});

它可能会alert("A")两次,我不希望那样...

4

2 回答 2

2

您正在寻找jQuery.stop()'jumpToEnd'的参数:

这可以解决问题:

$(".a").stop(true,true);

演示:

于 2012-05-20T07:32:45.577 回答
0

为什么需要触发呢,难道不能在调用complete:event后直接调用绑定到右边的同一个函数,.stop()得到同样的效果吗?

于 2012-05-20T07:23:18.403 回答