我有form
个select
元素,用户可以从中选择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
?
答案 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.