jquery:我怎样才能阻止appendTo立即发生?

Dan*_*Dan 2 javascript jquery delay appendto jquery-animate

我一直在谷歌搜索并试图让我的生活延迟追加到即时发生,以便我可以先做一个漂亮的淡出.这里,myObject是一个链接:

<a href="#">My Link</a>
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个无序列表:

<div id="newDiv">
<ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)

做这样的事情:

myObject.fadeOut(300).appendTo('#newDiv ul').fadeIn(300);
myObject.wrap('<li></li>');
Run Code Online (Sandbox Code Playgroud)

我知道appendTo不是动画对象,所以它只是瞬间发生.所以我尝试将追加作为fadeOut的回调:

myObject.fadeOut(300, myObject.appendTo('#newDiv')).fadeIn(300);
myObject.wrap('<li></li>');
Run Code Online (Sandbox Code Playgroud)

只是现在它不仅立即发生,包裹不再起作用.我也尝试使用setTimeout来延迟无效.

Poi*_*nty 6

试试这个:

myObject.fadeOut(300, function() { $(this).appendTo('#newDiv ul').fadeIn(300) });
Run Code Online (Sandbox Code Playgroud)

通过在淡入淡出的回调中执行"appendTo",您可以等到淡入淡出完成.所有(据我所知)jQuery动画效果都需要回调.

  • 他的回调最初并不是真正的回调.回调的重点是它是一个在原始任务完成时调用的函数,但是传递myObject.appendTo('...')过早地调用appendTo并将其返回值作为回调参数传递. (2认同)