2011-07-18 48 views
1

我不知所措。在这个代码中,#选项应该渐渐消失,但它不会。但CSS属性已设置。回调不能正常工作

$("#content > p").animate({ opacity: '0' }, function() { 
    $(this).css("display", "none"); 
    $("#options").css("opacity", "0").show(0, function() { 
     $("#options").fadeIn(); 
    }); 
}); 
+0

你如何做一行代码:'$(“#options”)。fadeIn();'这应该足够了 – Ibu

+0

但我需要它也设置display:block,因此show功能。 –

回答

2

opacity仍然被设置为0

您可以更改fadeIn()到...

$("#options").animate({ opacity: 1}, 500); 

jsFiddle

+0

是的,但我已将它设置为淡入之后.. –

+2

感谢您的编辑。完美的作品。 –

+0

@John - 如果这回答您的问题,请确保并单击​​问题旁边的复选标记。 :)(不是@alex需要点数,介意你...... P) –

0

您可以简化您的代码 - 记住将不透明度设置为0将复制visibility:hidden CSS属性,而​​将复制display:none CSS属性。这两者之间的一个关键区别是后者将从呈现的DOM中移除元素,因此它不会占用屏幕上的空间,并且周围的节点甚至不会知道它在那里。前者将创建一个大的空盒子,其中元素仍然是,但你无法看到它。假设你想使用后者是最常见的,这应该工作:

$('#content > p').fadeOut('slow', function() { 
    $('#options').fadeIn(); 
}); 
+0

你不明白。它有显示:无;默认情况下,所以我需要显示功能将其更改为阻止。 –

+0

'fadeIn()'会自动将它设置为'display:block' – AlienWebguy

2

好像它应该工作,但显然你需要使用fadeTo()[docs]方法,而不是fadeIn()[docs]方法。

$('img').css("opacity", 0).show(0,function() { 
    $(this).fadeTo(400, 1); 
}); 

虽然show(0,func..似乎有点毫无意义在这里,当你可能只是做:

$('img').css("opacity", 0).show().fadeTo(400, 1); 

...除非0你给了.show()时间实际上是一个变量,可能会引用更大的数字。