【问题标题】:jquery: how can I stop appendTo from happening instantly?jquery:如何阻止 appendTo 立即发生?
【发布时间】:2011-09-05 21:34:09
【问题描述】:

我一直在谷歌上搜索并试图让 appendTo 立即发生,这样我就可以先做一个很好的淡出。这里,myObject 是一个链接:

<a href="#">My Link</a>

我想把它移到一个无序列表中:

<div id="newDiv">
<ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>
</div>

通过这样做:

myObject.fadeOut(300).appendTo('#newDiv ul').fadeIn(300);
myObject.wrap('<li></li>');

我知道 appendTo 不是动画对象,所以它会立即发生。所以我尝试将追加作为一个回调到淡出:

myObject.fadeOut(300, myObject.appendTo('#newDiv')).fadeIn(300);
myObject.wrap('<li></li>');

只是现在它不仅立即发生,包装不再起作用。我也尝试过使用 setTimeout 来延迟追加无济于事。

【问题讨论】:

    标签: javascript jquery jquery-animate delay appendto


    【解决方案1】:

    试试这个:

    myObject.fadeOut(300, function() { $(this).appendTo('#newDiv ul').fadeIn(300) });
    

    通过在淡入淡出的回调中执行“appendTo”,您可以等到淡入淡出完成。所有(据我所知)jQuery 动画效果都采用这样的回调。

    【讨论】:

    • 他的回调原本并不是真正的回调。回调的全部意义在于它是一个在原始任务完成时将被调用的函数,但传递 myObject.appendTo('...') 过早地调用 appendTo 并将其返回值作为回调参数传递。
    • 是的,名字奇特的@OlduvaiHand 是正确的。 OP 中的“回调”根本不是回调。
    猜你喜欢
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多