jQuery使用快速鼠标移动设置打断动画!
jQuery的一个问题困扰了我很长时间,我想最终找到一个解决方案。拥有此代码: 如果我在所有对象中快速移动鼠标,动画就会中断,因为它不会完全展开。我怎样才能不发生这种事呢 我尝试了“stop(true,true)”,但这会使动画失去平滑度,因为它会跳到动画队列的末尾 谢谢。我用了jQuery使用快速鼠标移动设置打断动画!,jquery,jquery-animate,Jquery,Jquery Animate,jQuery的一个问题困扰了我很长时间,我想最终找到一个解决方案。拥有此代码: 如果我在所有对象中快速移动鼠标,动画就会中断,因为它不会完全展开。我怎样才能不发生这种事呢 我尝试了“stop(true,true)”,但这会使动画失去平滑度,因为它会跳到动画队列的末尾 谢谢。我用了。停止(真的,真的),它似乎可以工作 动画看起来仍然平滑 演示:我已经使用了。停止(true,true),它似乎工作正常 动画看起来仍然平滑 演示:我对你所说的“失去平滑”的意思有点困惑-它在我看来仍然是平滑的:我对你
。停止(真的,真的)
,它似乎可以工作
动画看起来仍然平滑
演示:我已经使用了。停止(true,true)
,它似乎工作正常
动画看起来仍然平滑
演示:我对你所说的“失去平滑”的意思有点困惑-它在我看来仍然是平滑的:我对你所说的“失去平滑”的意思有点困惑-它在我看来仍然是平滑的:我认为他的意思是,如果他快速地来回移动鼠标,他不希望动画无限叠加。但是,执行
.stop()
操作将导致当前动画立即停止,而不是让当前动画继续运行并从队列中删除其余动画。执行.stop(true,true)
将跳转到当前动画的结尾并从那里继续
我认为OP想要的是让当前动画运行,然后开始下一个动画,而不是在鼠标快速移动的情况下无限叠加动画
实现这一点的一种方法是自己跟踪当前正在制作动画的元素。这显示了实现您想要的目标的一种方法:
编辑
在澄清之后,我又举了一个例子。这基本上可以防止在通过slideDown()
和slideUp()
设置动画的元素上使用stop()
将高度弄乱
诀窍是自己用.animate()
制作动画,并自己跟踪原始高度
我认为他的意思是,如果他快速地将鼠标移过来移出去,他不希望动画无限叠加。但是,执行
.stop()
操作将导致当前动画立即停止,而不是让当前动画继续运行并从队列中删除其余动画。执行.stop(true,true)
将跳转到当前动画的结尾并从那里继续
我认为OP想要的是让当前动画运行,然后开始下一个动画,而不是在鼠标快速移动的情况下无限叠加动画
实现这一点的一种方法是自己跟踪当前正在制作动画的元素。这显示了实现您想要的目标的一种方法:
编辑
在澄清之后,我又举了一个例子。这基本上可以防止在通过slideDown()
和slideUp()
设置动画的元素上使用stop()
将高度弄乱
诀窍是自己用.animate()
制作动画,并自己跟踪原始高度
它在没有.stop()的情况下工作得很好,这样它可以堆叠动画…在没有.stop()的情况下工作得很好,这样它可以堆叠动画…你是对的。你所描述的方式的问题是,如果我快速进入和退出元素,子菜单仍然完全展开,我更希望它在我制作mouseleve时停止展开。这完全符合我的要求!:)为什么“var height=$subMenu.height();”在“display:none;”中不返回“0”??jQuery会在获取高度之前将其更改为可见,然后立即恢复初始状态。这会让你更容易,所以你不必担心自己会再次将其切换为可见/获得高度/隐藏。如果您对jQuery的工作方式感兴趣;它使用
jQuery.swap
来实现它。在中搜索以swap:
开头的行,您是对的。你所描述的方式的问题是,如果我快速进入和退出元素,子菜单仍然完全展开,我更希望它在我制作mouseleve时停止展开。这完全符合我的要求!:)为什么“var height=$subMenu.height();”在“display:none;”中不返回“0”??jQuery会在获取高度之前将其更改为可见,然后立即恢复初始状态。这会让你更容易,所以你不必担心自己会再次将其切换为可见/获得高度/隐藏。如果您对jQuery的工作方式感兴趣;它使用jQuery.swap
来实现它。在元素之间快速移动鼠标,搜索以swap:
开头的行,您将看到一个跳转到动画队列的末尾。我不希望:(在元素之间快速移动鼠标,您将看到一个跳转到动画队列的末尾。我不希望:(在元素之间快速移动鼠标,您将看到一个跳转到动画队列的末尾。我不希望这样。在元素之间快速移动鼠标,您将看到一个跳转到动画队列的末尾。我不希望这样。
$(document).ready(function(){
$("ul.first li").mouseenter(function(){
$("ul", this).slideDown();
});
$("ul.first li").mouseleave(function(){
$("ul", this).slideUp();
});
});