如何在jquery中停止以前的dom元素动画
How to stop previous dom element animation in jquery
我正在尝试使用jquery来使用动画。当我将鼠标悬停在元素上时,它会增加高度,当mouseout时,会返回到原始高度。
问题是,当我将鼠标从一个元素移到另一个元素时,上一个元素的动画仍在执行。如何停止上一个元素的动画?
Fiddle代码:
http://jsfiddle.net/EVZVQ/
使用.stop()
:http://api.jquery.com/stop
$('.div_1').mouseover(function(){
$(this).stop().animate({'height':'200px'},2000);
}).mouseout(function(){
$(this).stop().animate({'height':'100px'},2000);
});
请注意,您可以链接事件绑定函数,而不是连续两次选择.div_1
。
下面是一个演示:http://jsfiddle.net/EVZVQ/1/
当对元素调用.stop()时,当前正在运行的动画(如有的话)立即停止。例如,如果一个元素当调用.stop()时,用.slideUp()隐藏,该元素现在将仍然显示,但将是其先前高度的一小部分。不调用回调函数。
来源:http://api.jquery.com/stop
更新
你可以像这样一次停止所有的div(但我不确定这是你想要的效果):
var $divs = $('.div_1');
$divs.mouseover(function(){
$divs.stop().filter(this).animate({'height':'200px'},250);
}).mouseout(function(){
$divs.stop().filter(this).animate({'height':'100px'},250);
});
下面是一个演示:http://jsfiddle.net/EVZVQ/2/
这样做效果更好。
$('.div_1').mouseover(function(){
$(this).stop(true).animate({'height':'200px'},200);
});
$('.div_1').mouseout(function(){
$(this).stop(true).animate({'height':'100px'},200);
});
http://jsfiddle.net/diode/EVZVQ/7/
相关文章:
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- IE9-添加和删除DOM元素会破坏父keydown事件
- 未捕获错误:元素缓存中id为x的DOM元素与DOM中的元素不同
- 在 ng-if 编译后访问指令中的 DOM 元素
- spin.js/angular spinner:如何将spin定位到DOM元素中(包括plunker演示)
- 如何在dom元素中插入输入标记数据插件
- Mobile Safari、jQuery以及绑定到未来的DOM元素
- 从字符串创建dom元素时添加多个类
- 如何根据客户端的屏幕大小使用javascript更改DOM元素
- 为onClick-hander插入临时DOM元素