Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在动画运行和移动时停止mouseenter_Javascript_Jquery_Animation_Jquery Animate_Mouseenter - Fatal编程技术网

Javascript 如何在动画运行和移动时停止mouseenter

Javascript 如何在动画运行和移动时停止mouseenter,javascript,jquery,animation,jquery-animate,mouseenter,Javascript,Jquery,Animation,Jquery Animate,Mouseenter,我有一个动画在mouseenter上运行和移动,代码如下: $(".still").mouseenter(function () { w1.goToAndPlay(0); $("#w1").delay(300); $("#w1").animate({left: '-200px'}, 1700, function() { $("#w1").delay(550); $("#w1").animate({left: '0px'}, 2500);

我有一个动画在mouseenter上运行和移动,代码如下:

$(".still").mouseenter(function () {
    w1.goToAndPlay(0);
    $("#w1").delay(300);
    $("#w1").animate({left: '-200px'}, 1700, function() {
        $("#w1").delay(550);
        $("#w1").animate({left: '0px'}, 2500);
    });   
})
只有一个大问题我无法解决: 如果我把指针拿出来再拿进去,动画本身就会重置(goToAndPlay),动画功能会一直运行。 现在我想实现的是“冻结”mouseenter函数,直到一切都完成

这是我尝试过的,似乎合乎逻辑,但不起作用:

$(".still").mouseenter(function () {
    w1.goToAndPlay(0);
    $("#w1").delay(300);
    $("#w1").animate({left: '-200px'}, 1700, function() {
        $("#w1").delay(550);
        $("#w1").animate({left: '0px'}, 2500, function() {
            $(this).attr("class","still");
        });
    });   
}).mouseleave(function () {
    $(this).attr("class","moving");
});
因此,我想:“如果我在动画移动时更改了类,或者用户将指针移出了类,那么仍然是‘mouseenter的选择器将不再工作’,但这显然是错误的,因为显然,即使更改了类,mouseenter也在工作。我错过了什么?
谢谢大家!

您可以创建一个全局变量“isAnimated”(在当前函数的作用域之外),并将其设置为false。在鼠标上,它将被设置为“true”。在上一个动画回调中,将其设置为false。在动画功能中,您将检查“isAnimated”是否为false-否则它将不会启动。

您可以使用来确定元素当前是否正在制作动画。如果正在设置动画,只需返回false即可。否则,启动动画。我猜他说的是
$(elem).is(':animated')
。等等什么?你没有发布答案,只是在任何地方暗示,还投票否决了我的答案?大福?