前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用jQuery的delay()延迟执行show()和hide()不起效的解决方法

使用jQuery的delay()延迟执行show()和hide()不起效的解决方法

作者头像
德顺
发布2019-11-12 23:13:31
3.2K0
发布2019-11-12 23:13:31
举报
文章被收录于专栏:前端资源前端资源

今天使用 jQuery 的 delay() 来延迟执行 hide() ,发现延时不起效,查了一些资料,找到了其中的原因。

首先介绍一下 delay() :

语法:
代码语言:javascript
复制
delay(duration,[queueName])
概述:

设置一个延时来推迟执行队列中之后的项目。

jQuery 1.4 新增。用于将队列中的函数延时执行。他既可以推迟动画队列的执行,也可以用于自定义队列。

参数:

duration 延时时间,单位:毫秒

queueName 队列名词,默认是Fx,动画队列。

示例:

.slideUp().fadeIn() 之间延时800毫秒。

HTML 代码:

代码语言:javascript
复制
<div id="foo" />

jQuery 代码:

代码语言:javascript
复制
$('#foo').slideUp(300).delay(800).fadeIn(400);

但是使用他来延迟执行 show() 和 hide() 却不起效:

HTML:

代码语言:javascript
复制
<div id='test' style="display:none">test</div>

jQuery :

代码语言:javascript
复制
$("#test").delay(5000).show();  //延迟5秒来现在id为test的div

上边的代码无效,必须得在 show() 中传参数:

代码语言:javascript
复制
$("#test").delay(5000).show(function(){}); //传回调函数
或
$("#test").delay(5000).show(1); //动画的速度 或 fast 或 slow 或 随便写如 xxx

疑惑是为什么必须传参数才能正确执行?同样的 hide() 也如此。

看一下 jQuery文档对 delay() 的解释:

设置一个延时来推迟执行队列中的项目,它既可以推迟动画队列中函数的执行,也可以用于自定义队列。只有在队列中的连续事件可以被延时,因此不带参数的 .show().hide() 就不会有延时,因为他们没有使用动画队列。也就是说只有 show()hide() 带有参数的时候才能被插入执行队列中。

简单的说,其实 show()hide() 在不加参数的情况下是直接对元素的 display 样式设置。

声明:本文由w3h5原创,转载请注明出处:《使用jQuery的delay()延迟执行show()和hide()不起效的解决方法》 https://cloud.tencent.com/developer/article/1537805

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 语法:
  • 概述:
  • 参数:
  • 示例:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档