2011-12-06 51 views
4

我有一个网站,我设计了一些嵌套的DIV元素作为容器来容纳可扩展按钮。

用户点击一个按钮,它展开显示更多的内容。

一切都很好,直到我有一个父DIV内部的DIV,它的display属性设置为“none”。

有没有什么办法强制jQuery .slideUp()方法尽量减少可扩展按钮,无论它是否在显示:无父母或不是?

或者,我需要设置什么属性/属性才能使$ .slideDown()在显示器中设置的元素上正常工作:none parent DIV?

回答

3

取而代之的应用效果基本show()的可扩展按钮,尝试设置他们的“显示”价值“无”。

这样,当您应用.slideDown()方法时,它会认为使用.slideUp()方法已经隐藏了该元素。

+0

我会试试这个! – exoboy

+0

这工作得很好,我只需要改变元素本身的CSS而不是它的父类。谢谢! – exoboy

+0

+1了解OP的问题比我更好。 –

5

如果父母有display:none;那么您需要在尝试向上滑动孩子之前显示它。您可以使用show函数执行此操作。

$(divToSlide).parent().show(); 
$(divToSlide).slideUp(); 

%的评论,你可以或者,你可以只显示属性设置为“块”

$(divToSlide).parent().css("display", "block"); 
$(divToSlide).slideUp(); 
+0

实际上,更简单的方法是简单地将元素的CSS显示属性更改为“无”。这样可以避免处理更多元素所需的系统开销。 – henkojinko

+0

@henkojinko - 够公平的,但你能详细说明吗?我假设演出只是设置显示和可见性。它不仅仅是这样做吗? –

+0

他们这样做。但是,如果您希望使用slideDown正确触发某个特定元素,而不必首先使用slideUp,则只需将其显示属性设置为“无”即可。这样,你不必担心它嵌套在哪个祖先中,是隐藏的,阻止的或者没有的。 – henkojinko

0

我有完全相同的问题,并没有提到的解决方案为我工作的方式我期望,因为有时我应用show()功能时失去了slideUp/slideDown动画本身。我的最终解决方案是使用一个回调函数,直接应用的样式:

$(divToSlide).slideUp(delay, function() { 
    // When animation ends 
    $(this).css('display', 'none'); 
}); 

这样我能得到不失动画相同的结果。