在显示器上使用show()时保持边框间距:使用display:none隐藏的table元素

时间:2014-11-11 15:42:22

标签: jquery html css

我有formselect元素,用户可以从中选择value="Yes"value="No"。如果value="Yes",JQuery使用.show()来显示包含div的{​​{1}},以便用户可以解释是答案。否则,textarea需要隐藏。

表单设置为CSS textarea,表单的每一行都是table,其中包含一个或多个table-row

我试图让table-cell最初隐藏在CSS中textarea,因为当我使用JQuery来隐藏它时,它会在屏幕上闪烁片刻,然后JQuery会隐藏它。

但是,最初用display:none隐藏它会导致另一个问题:当您随后使用JQuery显示它时,它会忽略左侧和右侧的display:none间距。

设置

This fiddle以使用JQuery隐藏它,如果取消注释CSS的最后一行,您可以看到在使用JQuery显示它之后侧边距如何消失。 (闪烁问题在小提琴上并不明显,因为我删除了所有其他代码。)当取消注释时,JQuery中的两个注释行将使其与10px一起使用,但是他们通过操纵CSS来实现这一点,意思是如果间距发生变化,则必须手动更改。

使用display:none时,有没有办法维护border-spacing

1 个答案:

答案 0 :(得分:0)

当我写这个问题时,我弄清楚问题是什么。元素必须为display:table。由于CSS初始设置为display:none.show()没有迹象表明需要将其返回到display:table,而是将其显示为display:block。这就是display:table格式border-spacing不起作用的原因:它不能与display:block一起使用。

我提出的最简单的解决方案是根本不使用.show(),而是使用table_hidden创建新的display:none课程,然后使用.removeClass()和{{1}实现显示/隐藏。 Here's a fiddle.