首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是什么决定了jQuery链中方法的执行顺序?

是什么决定了jQuery链中方法的执行顺序?
EN

Stack Overflow用户
提问于 2009-10-21 00:36:22
回答 7查看 3.6K关注 0票数 10

HTML代码

代码语言:javascript
运行
复制
<div id="foo">
    <h1>foo</h1>
    <p>Pellentesque habitant morbi tristique.</p>
</div>
<div id="bar">
    <h1>bar</h1>
</div>

jQuery码

代码语言:javascript
运行
复制
$('#bar').click(function () {
    $('#foo p').hide('slow').appendTo('#bar').show('slow');
})

预期结果

单击#bar时

  1. p中隐藏#foo元素
  2. p附加到#bar
  3. 显示p,它现在是#bar的子级

实际结果

  1. p附加到#bar
  2. p中隐藏#foo元素
  3. 显示p,它现在是#bar的子级

问题

  • 是什么决定了jQuery链中方法的执行顺序?
  • 如何确保每个事件在下一个事件开始之前完成?
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-10-21 00:46:22

如果要等到每个动画完成后再执行下一步,请使用文献资料中详细介绍的动画回调。

代码语言:javascript
运行
复制
$('#bar').click(function () {
  $('#foo p').hide('slow', function(){
    $(this).appendTo('#bar').show('slow');
  });
});
票数 3
EN

Stack Overflow用户

发布于 2009-10-21 00:43:06

若要确保在“隐藏”或“显示”等效果之后执行某项操作,请使用回调。http://docs.jquery.com/Effects/show#speedcallback

To Add:

文森特是对的,实际上

  1. 开始在#foo中隐藏p元素(慢慢地)
  2. 将p附加到#bar (一张快照)
  3. 开始显示p,它现在是#bar的一个子类(慢慢地)

你看到的是效果的结果

  1. 将p附加到#bar (已执行)
  2. 在#foo中隐藏p元素(已完成)
  3. 显示p,它现在是#bar的子级(已完成)
票数 8
EN

Stack Overflow用户

发布于 2009-10-21 00:41:33

预期的结果是正确的。观察到的行为可能是运行asynchronously.的隐藏(“慢速”)的结果因此,它在执行下一个操作时运行。因此,似乎p首先被附加到#bar中。您可以尝试隐藏(),而不用慢慢来看这是否有区别。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1598129

复制
相关文章

相似问题

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