元素在.animate()之前使用jquery .hide()保持隐藏

时间:2012-01-24 22:37:38

标签: jquery internet-explorer-8

我正在尝试在DOM上放置一个隐藏的验证弹出窗口,然后在发送表单时将其设置为动画。我发现在将元素设置为完全不透明度之前使用.hide().css(opacity, 0)时,jQuery动画方法的运行方式不同。

在代码的早期,如果我使用.hide().animate()且其opacity属性设置为1,则根本不起作用。但是,.fadeIn()方法首先使用.hide()。如果我使用opacity方法将元素的.css()设置为0,那么.animation()将淡入元素。我想使用.animate(),因为它具有灵活性和附加选项。

我决定继续使用.css()方法,但后来遇到了尝试支持IE8的问题。 .css(opacity, 0)不会隐藏IE8中的元素,因此我此时唯一的选择是使用.fadeIn()来完成我想要完成的任务。

是否有其他人遇到过这个问题,如果有的话,我可以向你提出一些建议=)

3 个答案:

答案 0 :(得分:0)

hide和'fadeIn / fadeOut methods toggle the显示:css property. Whereas animating the opactiy, does not. I've found the simplest fix for this is to call fadeTo`而不是隐藏,只是淡化为0不透明。

$('#target-element').fadeTo( 0, 0 ).fadeTo( 3000, 1 );

答案 1 :(得分:0)

这是一个读取jQuery源代码非常有用的情况。 hide()实际上在CSS上设置了display:none声明。设置display:none后,即使您更改了不透明度,该元素也会隐藏。

如果您希望该元素再次可见,则首先需要设置display:block。这正是fadeIn()所做的:首先调用show()(设置display:block),然后设置不透明度。

因此,您可以选择在手动运行不透明动画时自动切换显示,或者只使用fadeIn / Out辅助方法。

答案 2 :(得分:0)

我之前也遇到过这个问题。我发现了对隐藏,淡入淡出和动画的行为的这种解释。

http://www.catchmyfame.com/2010/08/31/jquery-hide-vs-fadeout-vs-animate/

我认为jquery做了许多特定于浏览器的mumbo jumbo,其动画不透明度可以隐藏ie的疑虑。你可以做的是有一个类,让你的元素屏幕外,在html中应用,然后使用查询动画它不可见,删除屏幕外的持有者类,然后在你需要时动画它。

我使用的是一个有位置的类:绝对和左:100%用于我的一些东西。似乎工作。