jQuery:在jQuery hide()完成后进行更改

时间:2012-08-12 21:17:33

标签: jquery html hide document-ready

问题在于:jsFiddle

我想要的是黄色高度从60px变为20px仅 AFTER 它被滑下(它在点击时滑动)。怎么解决?

 $(document).ready(function ()
   {
     $('#slide-link').click(function(){
       $(this).animate({ top: $(window).height()-40 },5000)
       $('#sliderWrapper').stop().hide("slide", { direction:"down" }, 5000); 
       $('#slide-link').height(20)
      //I want 20px to become after #sliderWrapper slided down, not on click
      //That's why I put $('#slide-link').height(20) as the last line
      // But it triggers asap. How to fix?
    })
})​

据我所知,$('#slide-link').height(20)不会等到$('#sliderWrapper').stop().hide("slide", { direction:"down" }, 5000); 完了。

P.S。 $('#slide-link').delay(5000).height(20)也没有帮助。为什么?怎么解决?

1 个答案:

答案 0 :(得分:4)

.delay()仅影响使用动画队列的函数。但是,.height()根本不与动画相关,因此不使用该队列。

你想要的是动画完成后触发的.hide()的回调:

$('#sliderWrapper').stop().hide("slide", {
    direction: "down"
}, 5000, function() {
    $('#slide-link').height(20)
});

演示:http://jsfiddle.net/ThiefMaster/DDeqU/3/