首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >揭穿.delay()

揭穿.delay()
EN

Stack Overflow用户
提问于 2011-09-14 04:03:40
回答 3查看 241关注 0票数 3

请参阅马特对this question的回答。他说,.delay()让大多数人感到困惑,他给出了以下示例:

$('#foo').hide().delay(2000).slideDown().text('Hello!').delay(2000).hide();

有关小提琴的信息,请参见here。有人能解释一下这行代码的行为吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-14 04:07:37

只有jQuery代码的某些部分可以用.delay()推送-- hide()text(),而不是

所以基本上代码所做的是(并不是真的这样做,这只是一个草图):

代码语言:javascript
运行
复制
setTimeout(function(){
    $('#foo').slideDown();
}, 2000);
$('#foo').hide().text('Hello!').hide();

这就是为什么slideDown()似乎最后才发生的原因。

票数 7
EN

Stack Overflow用户

发布于 2011-09-14 05:31:07

它行为不端的原因已经解释过了。要获得所需的行为,请使用queue

代码语言:javascript
运行
复制
$('#foo')
    .hide()
    .delay(2000)
    .slideDown()
    .queue(function() {
        $(this).text('Hello!').dequeue();
    })
    .delay(2000)
    .queue(function() {
        $(this).hide().dequeue();
    });
票数 3
EN

Stack Overflow用户

发布于 2011-09-14 04:14:55

delay会在动画队列中放置延迟(无效果动画),因此它仅影响其他动画。在delay之后链接hide不会延迟hide,它仍然会立即发生。

如果您将这些方法划分为立即影响元素的方法和启动动画的方法,则会得到执行相同操作的代码:

代码语言:javascript
运行
复制
$('#foo').hide().text('Hello!').hide(); // set text and hide twice
$('#foo').delay(2000).slideDown().delay(2000); // wait, slide, wait and do nothing
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7407764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档