Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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/70.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 右键动画jquery_Javascript_Jquery_Animation - Fatal编程技术网

Javascript 右键动画jquery

Javascript 右键动画jquery,javascript,jquery,animation,Javascript,Jquery,Animation,我有四个带图片的块,我需要给它们设置动画:当你把鼠标放在块上时,它会下降; 当你把它拿走的时候,它会上升。现在我的问题是我移动鼠标的速度非常快,块开始排队等待我的动作,过了一些时候,它们好像没有我就移动了 JS代码: $('.blocks').hover( up, down ); function up() { $(this) .animate ({ top: '+=400px'}, 1000);

我有四个带图片的块,我需要给它们设置动画:当你把鼠标放在块上时,它会下降; 当你把它拿走的时候,它会上升。现在我的问题是我移动鼠标的速度非常快,块开始排队等待我的动作,过了一些时候,它们好像没有我就移动了

JS代码:

$('.blocks').hover( up, down );
    function up() {
            $(this)
            .animate ({
                top: '+=400px'}, 1000);
    }

function down() {
    $(this).delay(300)
        .animate ({
            top: '-=400px'}, 800);
}
`
用这个

$('.blocks').hover( up, down );

function up() {
        $(this).stop().animate({
            top: '+=400px'
        }, 1000);
}

function down() {
        $(this).stop().delay(300).animate({
            top: '-=400px'
        }, 800);
}

在对新动画排队之前,需要停止动画以避免此问题。您可以在以下网址找到更多详细信息:

在使用jQuery的.animate()函数时,它通常由鼠标指针或悬停事件触发。这一切都很好,但这意味着我们需要考虑那些被多次触发的事件

解决方案: 使用jQuery stop()函数

例如:

$('.blocks').hover( up, down );

function up() {
    $(this).stop().animate ({ top: '+=400px' }, 1000);
}

function down() {
    $(this).stop().delay(300).animate ({ top: '-=400px'}, 800);
}
Chris Coyier写了一篇关于如何处理这个问题的好文章

感谢您提供的有用链接,但我仍然不知道如何使用“jQuery stop()函数”使块向右移动,因为当您停止动画时,块开始表现出奇怪的行为,例如,不仅在400px上下移动,在800px上下移动两次。不完全清楚您的意思,如果你用你的例子做一个JSFIDLE,我会帮你看一看@用户2950593