转:遇到jQuery 中的 slideUp ,slideToggle和 slideDown 动画重复执行

jQuery动画原理与工业级实战:兼容性、队列控制与边缘场景优化 jQuery动画本质上是JavaScript驱动的DOM属性插值系统,通过定时器逐帧修改内联样式实现跨浏览器一致行为。其核心价值在于内置的兼容性兜底(如IE opacity降级)、声明式队列管理(FIFO链式执行高度可调试性(step回调、帧级监控)。在低配设备、离线环境或遗留系统中,它比CSS transition或现代框架动画更可控、更稳定。本文深入解析show/fade/slide三类函数的行为逻辑、animate()的7种参数写法、stop()/finish()的战场级控制策略,并结合银行终端等 阅读详情

jQuery 可以通过调用 animate 方法添加动画效果, 而且还提供了一套别名, 使用起来很是方便. 其中 slideDown和 slideUp 两方法的作用是纵向展开和卷起一个页面元素, 被使用的几率很高, 却一直存在一个小问题.

如果目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行, 相当不美观 演示页面中有一个按钮, 请用鼠标迅速地来回划过…

如果用 jQuery 来实现这样的效果, 该如何处理呢?
其实很简单, 只需在触发元素上的事件设置为延迟处理, 即可避免滞后反复执行的问题. 例如: 当鼠标滑过按钮后 0.2 秒, 菜单才会展开, 如果鼠标离开按钮, 展开的处理将被终止. 也就是说, 想要展开菜单鼠标必须有 0.2 秒的事件停留在按钮上, 那么迅速地划过按钮是无法执行展开事件的. 卷起也是如此.

var mouseover_tid = [];
var mouseout_tid = [];
  jQuery(document).ready(function(){
    jQuery('#menus > li').each(function(index){ 
    jQuery(this).hover(            
// 鼠标进入        
    function(){            
    var _self = this;      
        // 停止卷起事件      
        clearTimeout(mouseout_tid[index]);         
    // 当鼠标进入超过 0.2 秒, 展开菜单, 并记录到线程 ID 中        
        mouseover_tid[index] = setTimeout(function() { 
                jQuery(_self).find('ul:eq(0)').slideDown(200);     
        }, 400);            },         
    // 鼠标离开             function(){        
        var _self = this;          
    // 停止展开事件          
    clearTimeout(mouseover_tid[index]);    

// 当鼠标离开超过 0.2 秒, 卷起菜单, 并记录到线程 ID 中            
    mouseout_tid[index] = setTimeout(function() {          
        jQuery(_self).find('ul:eq(0)').slideUp(200);       
        }, 400);       
    }          
); 
});
 });

原文地址:http://www.cnblogs.com/kwishly/archive/2012/08/15/2640449.html

jQuery动画原理与实战:时间轴控制、队列调度与跨端稳定性 jQuery动画并非过时的CSS快捷方式,而是一套成熟的时间轴控制系统,其核心在于动画队列管理、属性插值计算与独立渲染调度。它通过封装requestAnimationFrame节流、DOM属性单位自动解析、easing曲线建模等机制,提供比原生JS更稳定、更易调试的动效体验。在兼容旧版浏览器、企业内网系统或快速验证交互动效原型等场景中,jQuery动画凭借可中断、可回滚、状态可查等特性,展现出独特工程价值。尤其在iOS Safari等对CSS transition支持不稳定的环境中,其手动帧控能力反而保障了 阅读详情

相关推荐

jQuery DOM操作入门:从选择器到事件委托的完整实战指南

DOM(文档对象模型)是Web前端开发中连接HTML文档与JavaScript交互的核心接口,它定义了页面元素的树状结构。其核心原理是通过JavaScript动态访问修改文档结构、样式与内容,从而实现页面的动态交互。掌握DOM操作的技术价值在于,它是所有前端框架(如React、Vue)实现视图更新的底层基础,理解原生或类库(如jQuery)的DOM操作,有助于深刻理解虚拟DOM、响应式数据绑定等高级概念的由来与优化本质。在实际应用场景中,高效的DOM操作是构建动态网页、实现用户交互(如表单验证、内容动态加

weixin_34319111的博客 331

jquery简介:【改变样式动画效果】

改变样式 返回值:Stringcss(name|pro|[,val|fn]) 访问匹配元素的样式属性。 参数 nameStringV1.0 要访问的属性名称 propertiesMapV1.0 要设置为样式属性的名/值对 name,valueString, NumberV1.4 属性名,属性值 name,function(index, value)String,Fu

专注于计算机研发知识和资讯分享 1万+

jQuery DOM操作深度解析:从选择器到性能优化的完整指南

DOM(文档对象模型)是Web开发中浏览器解析HTML文档形成的树形结构,它是前端交互的基石。其核心原理在于通过JavaScript动态操作DOM节点,实现页面内容的增删改查与样式更新,这一能力直接决定了Web应用的交互体验与性能表现。在技术价值层面,高效的DOM操作能显著提升页面响应速度、优化渲染性能,并确保复杂交互的流畅性。无论是构建动态表单、实现实时数据展示,还是开发交互式UI组件,DOM操作都是不可或缺的核心技术。本文聚焦于jQuery这一经典库,深入剖析其强大的选择器系统、链式遍历方法以及事件委托

weixin_30509393的博客 446

解决slideDown()slideUp()反复执行的问题

(1)初始代码: jQuery(document).ready(function($) { $(".main>li").hover(function() { $(this).children("ul").slideToggle(400); });

骆小胖~ 3036

JQuery动画slidedown/slideup在hover触发时重复执行的问题解决

思路 1.延时触发 2.stop()方法 stop([clearQueue],[jumpToEnd]); clearQueue:如果设置成true,则清空队列,可以立即结束动画。 jumpToEnd:如果设置成true,则完成队列,可以立即完成动画。可选,默认是false 例: $(func...

chipiehan0128的博客 816

原生JavaScript实现jQuery中的slideUpslideDown滑动效果

参考文章:https://blog.csdn.net/u013578101/article/details/45363039 作者:johnworks 目录 一、前言 二、第一次尝试 三、第一次失败的思考 四、让定时器乖乖就范 五、更灵活的管理方案 六、最终实现 七、个人修改后的最终代码 一、前言 在我自学JavaScript的时候,一直想实现类似安卓手机状态......

LaoYe的博客 7281

关于jqueryslideToggle()效果重复使用的问题

关于jqueryslideToggle()效果重复使用的问题 原地址:http://bbs.blueidea.com/thread-3038155-1-1.html /jquery/1.4.0/jquery.min.js"> $(document).ready(function(){ $(".nav_title").click(function()

Crazy的专栏 4824

jquery stop(true,false)的意思

stop 是jQuery中用于控制页面动画效果的方法。运行之后立刻结束当前页面上的动画效果。stop在新版jQuery中添加了2个参数:第一个参数的意思是是否清空动画序列,也就是stop的是当前元素的动画效果还是停止后面附带的所有动画效果,一般为false,跳过当前动画效果,执行下一个动画效果;第二个参数是是否将当前动画效果执行到最后,意思就是停止当前动画的时候动画效果刚刚执行了一般,这...

aijue2015的博客 547

遇到jQuery 中的 slideUpslideToggle slideDown 动画重复执行

说明 jQuery 可以通过调用 animate 方法添加动画效果, 而且还提供了一套别名, 使用起来很是方便. 其中 slideDown slideUp 两方法的作用是纵向展开卷起一个页面元素, 被使用的几率很高, 却一直存在一个小问题. 如果目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行, 相当不美观 演示页面中有一个按钮, 请用鼠标迅速

dongyou的专栏 3459

jQuery动画-上卷下拉

语法:$(selector).slideDown( [duration ] [, complete ] )

Xiaoming's Blog 2724

jQuery笔记(动画

使用JavaScript实现动画效果通常都是调用setTimeout()一点点地改变CSS样式,从而达到有动画效果。 要实现动画效果,单纯使用原始JavaScript会很繁琐,而使用jQuery就会相对简单一些。 1 show(),hide()与toggle() show(),hide()与toggle()顾名思义,就是显示,隐藏以及切换的意思,它们都是jQu...

banmao8461的博客 178

jQuery 效果 - 滑动

滑动效果通过动态改变元素的height)来实现展开收起的动画,常用于手风琴菜单、折叠面板、下拉列表等场景。与淡入淡出不同,滑动效果会改变元素的布局,隐藏时元素不再占据空间。

weixin_45422672的博客 301

通过JQUERY获取宽高及作业

补充: 滑动窗口-Slide windows slideToggle=SlideUp+SlideDown的效果 animate:V 方法用于创建自定义的动画, animation:N jquery动画效果终结 show、hide,toggle,slideup,slideDown,slidetoggle,animate(). w 4.16 二级菜单 淡入淡出 知识点:jquery动画、SlideU...

JJTHZSP的博客 225

jQuery的下拉上卷功能

开发工具与关键技术:VS,jQuery 作者:陈梅 撰写时间:2019年5月26日 图片代码源于老师教程 这次分享的是用jQuery代码实现的功能,下拉上卷,主要使用到slideDown(下拉动画)元素,slideUp(上卷动画)元素slideToggle(上拉下卷切换)元素,这三个元素的介绍。接下来我们先看一下布局图片吧! 页面布局的内容只要是学编程的看了都会了,就是几个div再给几个按钮来...

weixin_44538083的博客 371

jq课堂记录

补充: 滑动窗口-Slide windows slideToggle=SlideUp+SlideDown的效果 animate:V 方法用于创建自定义的动画, animation:N jquery动画效果终结 show、hide,toggle,slideup,slideDown,slidetoggle,animate(). window <html> <hea...

qq_44762417的博客 127

jQuery插件开发:前端组件化思维的底层训练场

jQuery插件并非过时技术,而是理解UI组件本质的轻量级实践入口。它强制开发者直面作用域隔离、配置驱动、生命周期管理与API边界设计等通用前端原理,其闭包封装、实例状态维护、命名空间事件等机制,与现代框架(Vue/React)的组件封装逻辑高度同源。掌握插件开发,实质是构建可复用、可销毁、可测试的交互模块能力,适用于遗留系统维护、轻量功能交付及前端基础认知补全。本文以生产级Accordion插件为例,详解工业级插件骨架设计。

diaoqi6581的博客 633

JavaScript0420笔记

<html> <head> <script src="jquery/jquery-1.7.1.min.js"></src> <script type="text/javascript"> $ function(){ $(".navmenu").mouseover(function(){ $(this).children("ul")....

SectSrms_Lee的博客 204

jQuery事件系统核心原理:委托、标准化与跨浏览器兼容

事件处理是前端交互的基石,其本质是监听用户行为并触发响应逻辑。原生DOM事件存在单播覆盖、浏览器差异、监听器注册分裂等底层缺陷,导致兼容性差、维护成本高。jQuery通过事件委托实现动态元素零绑定、事件对象标准化统一target/which等属性、命名空间支持精准解绑、生命周期钩子控制触发语义,构建起健壮的事件操作系统。这些机制不仅解决了IE与现代浏览器的兼容难题,更成为Vue、React等框架事件设计的思想源头。本文聚焦事件委托与事件对象标准化两大核心热词,解析其在真实业务场景(如动态列表操作、表单验证、

unixboy 518
上一篇: ECSHOP问题总结
下一篇: ECshop商品列表页按销量排序
Lindu001
博客等级 码龄15年 1粉丝 13原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值