详解jQuery停止动画——stop()方法的使用
发布时间 - 2026-01-10 21:49:20 点击率:次很多时候需要停止匹配元素正在进行的动画,比如,当鼠标选入元素时显示菜单,鼠标离开时隐藏下拉菜单,如果鼠标移入移出过快的话就会导致动画效果与鼠标的动作不一致的情况,此时stop()就派上用场了。

stop()方法的语法结构为:
stop([clearQueue],[gotoEnd]);
参数clearQueue和gotoEnd都是可选参数,为Boolean值(true或false)。clearQueue代表是否清空未执行完的动画队列,gotoEnd代表是否直接将正在执行的动画跳转到末状态。
(1)直接使用使用stop()方法,则会立即停止当前正在进行的动画,如果接下来还有动画等待继续进行,则以当前状态开始接下来的动画。比如下面例子:
<!-- html部分 --> <div id="panel" style="width: 60px;height: 22px;background-color: #eee;">呵呵</div>
/* js部分 */
$("#panel").hover(function() {
$(this).stop().animate({height: "150"}, 200);
},function() {
$(this).stop().animate({height: "22"}, 300);
});
此时,在光标移入时,触发光标移入动画(在0.2秒内height变为150),在动画还没执行完的时候光标移出,则停止当前动画(可能height还未到达150),执行光标移出触发的动画(在0.3秒内height变回22)。反之亦然。
如果遇到组合动画,例如:
$("#panel").hover(function() {
$(this).stop()
.animate({height: "150"}, 200) //如果在此时触发了光标的移出事件
//将执行下面的动画
.animate({width: "300"},300); //而非光标移出事件中的动画
},function() {
$(this).stop()
.animate({height: "22"}, 200)
.animate({width: "60"},300);
});
此时只用一个不带参数的stop()方法就显得力不从心了。因为stop()方法只会停止正在进行的动画,如果动画正执行在第1阶段(改变height的阶段),则触发光标移出事件后,只会停止当前的动画,并继续进行下面的.animate({width: "300"},300)动画,而光标移出事件中的动画要等这个动画结束后才会继续执行,这显然不是预期的结果。这种情况下stop()方法的第一个参数就发挥作用了。
(2)stop(true),此时程序会把当前元素接下来尚未执行完的动画队列清空。所以可以把上面代码改成如此代码,就能实现预期的效果。
$("#panel").hover(function() {
$(this).stop(true)
.animate({height: "150"}, 200) //如果在此时触发了光标的移出事件
//直接跳过后面的动画队列
.animate({width: "300"},300);
},function() {
$(this).stop()
.animate({height: "22"}, 200)
.animate({width: "60"},300);
});
(3)第2个参数(gotoEnd)可以用于让正在执行的动画直接到达结束时刻的状态,通常用于后一个动画需要基于前一个动画的末状态的情况,可以通过stop(false,true)这种方式来让当前动画直接到达末状态。
(4)两者结合起来stop(true,true),即停止当前动画并直接到达当前动画的末状态,并清空动画队列。
(5)注意,jQuery只能设置正在执行的动画的最终状态,而没有提供直接到达执行动画队列最终状态的方法。例如有一组动画:
$("div.content")
.animate({width: "300"}, 200)
.animate({height: "150"}, 300)
.animate({opacity: "0.2"}, 200);
无论怎么设置stop()方法,均无法再改变"width"或者"height"时,将此<div>元素的末状态变成300*150大小,并且设置透明度为0.2。
温馨提示:
jQuery中的动画有show()、hide()、fadeIn()、fadeOut()、slideDown()、slideUp()、animate()等等。stop()方法对上述的动画都适用。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# jquery
# 停止动画
# stop()方法
# JQuery动画和停止动画实例代码
# jQuery动画animate方法使用介绍
# jQuery动画效果animate和scrollTop结合使用实例
# jquery animate 动画效果使用说明
# JQuery动画animate的stop方法使用详解
# jQuery实现切换页面过渡动画效果
# Jquery中使用show()与hide()方法动画显示和隐藏图片
# jQuery动画与特效详解
# 利用jquery制作滚动到指定位置触发动画
# jQuery动画出现连续触发、滞后反复执行的解决方法
# jQuery 动画与停止动画效果实例详解
# 移出
# 鼠标
# 正在进行
# 清空
# 只会
# 都是
# 就会
# 还没
# 第一个
# 就能
# 才会
# 可以通过
# 事件中
# 还未
# 可选
# 会把
# 将此
# 结合起来
# 而非
# 不带
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
青岛网站建设如何选择本地服务器?
高防服务器:AI智能防御DDoS攻击与数据安全保障
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
黑客入侵网站服务器的常见手法有哪些?
原生JS获取元素集合的子元素宽度实例
如何基于PHP生成高效IDC网络公司建站源码?
Laravel如何使用模型观察者?(Observer代码示例)
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
如何用虚拟主机快速搭建网站?详细步骤解析
Android中AutoCompleteTextView自动提示
如何用PHP工具快速搭建高效网站?
如何在云虚拟主机上快速搭建个人网站?
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
JS实现鼠标移上去显示图片或微信二维码
JS碰撞运动实现方法详解
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
历史网站制作软件,华为如何找回被删除的网站?
香港服务器WordPress建站指南:SEO优化与高效部署策略
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Laravel如何实现API速率限制?(Rate Limiting教程)
重庆市网站制作公司,重庆招聘网站哪个好?
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
Python文本处理实践_日志清洗解析【指导】
网站图片在线制作软件,怎么在图片上做链接?
Laravel如何创建自定义中间件?(Middleware代码示例)
黑客如何通过漏洞一步步攻陷网站服务器?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
如何快速选择适合个人网站的云服务器配置?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
java中使用zxing批量生成二维码立牌
免费网站制作appp,免费制作app哪个平台好?
独立制作一个网站多少钱,建立网站需要花多少钱?
Python结构化数据采集_字段抽取解析【教程】
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
JavaScript实现Fly Bird小游戏
公司门户网站制作流程,华为官网怎么做?
如何实现建站之星域名转发设置?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
zabbix利用python脚本发送报警邮件的方法
如何用PHP快速搭建高效网站?分步指南
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制

