如何在执行新动画之前停止Jquery中所有以前的动画?

如何在执行新动画之前停止Jquery中所有以前的动画?,jquery,javascript-events,Jquery,Javascript Events,我只是在用JQuery做一些实验 我有一个图像,当出现mouseOver()并在mouseOut() 它工作得很好,除非你一次又一次地在链接上移动鼠标,比如说5次,图像会反复淡入淡出,5次,而你只是坐在那里等待它结束这种疯狂的行为 为了停止这种行为,我尝试使用一个标志,仅当它还没有动画时才启动动画,但是,猜猜看,会发生什么?如果,比如说,我有4个这样的按钮,并且我在不同的图像中淡入的每个按钮鼠标上,该动画将被忽略,因为该标志为false 那么,在执行新动画之前,有没有办法停止所有以前的动画? 我

我只是在用JQuery做一些实验

我有一个图像,当出现
mouseOver()
并在
mouseOut()

它工作得很好,除非你一次又一次地在链接上移动鼠标,比如说5次,图像会反复淡入淡出,5次,而你只是坐在那里等待它结束这种疯狂的行为

为了停止这种行为,我尝试使用一个标志,仅当它还没有动画时才启动动画,但是,猜猜看,会发生什么?如果,比如说,我有4个这样的按钮,并且我在不同的图像中淡入的每个按钮鼠标上,该动画将被忽略,因为该标志为false

那么,在执行新动画之前,有没有办法停止所有以前的动画? 我说的是JQuery中正常的
fadeIn()
slideDown()
函数


编辑:从链接添加代码

你已经试过了吗

说明:停止匹配元素上当前运行的动画。

使用
使用
.Stop()
fadeIn/Out
可导致不透明度卡在部分状态

一种解决方案是使用
.fadeTo()
,这为不透明度提供了一个绝对目标

function mouseOverOut(t) {
    if(t) {
        $('.img1').stop().fadeTo(400, 1);
        $('.img2').stop().fadeTo(400, 0);
    }
    else {
        $('.img1').stop().fadeTo(400, 0);
        $('.img2').stop().fadeTo(400, 1);
    } 
}
这里有一个简短的写作方法

function mouseOverOut(t) {
    $('.img1').stop().fadeTo(400, t ? 1 : 0);
    $('.img2').stop().fadeTo(400, t ? 0 : 1);
}
或者这可能有用。不过,先测试一下

function mouseOverOut(t) {
    $('.img1').stop().fadeTo(400, t);
    $('.img2').stop().fadeTo(400, !t);
}
编辑:最后一个似乎有效。真/假转换为1/0。您也可以直接使用
.animate()


@patrick Grrrrrrrr你暴露了我幼稚的函数命名习惯!不,我没有尝试停止,它是一个独立的函数吗?我应该像
stop()
那样称呼它吗?我现在就试试这个,然后再报告,谢谢使用stop()的goToEnd参数应该可以避免这个问题。@Dr.Molle-是的,这是一个选项,但在我看来效果更刺耳。当然,如果动画可以像你建议的那样顺利结束,它看起来应该会更好:)在你给出答案2年后,仍然有人(嗯..我)使用它!干杯
function mouseOverOut(t) {
    $('.img1').stop().fadeTo(400, t ? 1 : 0);
    $('.img2').stop().fadeTo(400, t ? 0 : 1);
}
function mouseOverOut(t) {
    $('.img1').stop().fadeTo(400, t);
    $('.img2').stop().fadeTo(400, !t);
}
function mouseOverOut(t) {
    $('.img1').stop().animate({opacity: t});
    $('.img2').stop().animate({opacity: !t});
}