2011-06-01 66 views
2

我一直在Google上搜索并试图让我的生活延迟appendTo的发生,所以我可以先做一个很好的淡出。在这里,myObject的是一个链接:jquery:我怎样才能阻止appendTo即刻发生?

<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不是一个动画对象,所以它只是瞬间发生。所以我试图把追加作为fadeOut的回调:

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

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

回答

6

试试这个:

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

通过从淡出回调做“appendTo”,你可以等到淡出完成。所有(据我所知)的jQuery动画效果采取这样的回调。

+0

介意解释为什么他的回调之前不工作? – Kayla 2011-06-01 00:17:18

+2

他的回调最初并不是真正的回调。回调的全部要点是,它是一个函数,当原始任务完成时将被调用,但通过myObject.appendTo('...')提前调用appendTo并将其返回值作为回调参数传递。 – BenTrofatter 2011-06-01 00:26:58

+0

是的,这个好奇的@OlduvaiHand是正确的。 OP中的“回调”根本不是回调。 – Pointy 2011-06-01 01:05:54

相关问题