2011-05-24 55 views
1

我熟悉将CSS类分配给GWT元素以控制其格式,但如果要更改其中一个CSS类的属性,该怎么办?在运行时更改GWT中CSS类的属性

我有一个样式化的数据列表。 CSS类用于指示各种数据类型(重要的,例行的,微不足道的)。我希望允许用户隐藏微不足道的条目。我想修改span.trivial CSS类设置display:none

我知道我可以通过输入回路,看是否一个条目是trivial并添加noShow类(其本身具有display:none) - 但后来我在做循环时,我宁愿让浏览器执行这项工作。

这是可能的GWT?

伊恩

回答

2

我认为我们有类似于下面的一个

<div> 
    <span class="routine">A</span> 
    <span class="trivial">B</span> 
    <span class="trivial">C</span> 
<div> 

这是我会怎么解决这个问题的结构:

.hideTrivial span.trivial { 
    display: none; 
} 

<div class="hideTrivial"> 
    <span class="routine">A</span> 
    <span class="trivial">B</span> 
    <span class="trivial">C</span> 
<div> 

".hideTrivial span.trivial"选择仅适用于“平凡的“跨度,如果它们出现在具有类”hideTrivial“的另一个元素中。 (注:跨度并不一定是一个直接孩子“hideTrivial”的div - 这是好的,如果你有一个更深的元素层次)

所以要打开/关闭隐藏,只需添加/从外部div中删除“hideTrivial”类。

(此技术可以使用和不GWT使用。)

+0

cha-ching!完美的答案。我在2011年专注于GWT,并在1995年忘记HTML!好的解决方案谢谢。 – ianmayo 2011-05-25 07:52:34

+0

两年后,它仍然是一个很好的答案! – Johanna 2013-04-23 14:01:51

1

据我所知,JavaScript不能更改CSS文件,并将它重新应用。 GWT也是一样(因为它编译成JS)。所以,你不能改变一个CSS规则,并让DOM中的所有元素都反映这个改变。

但是,您可以获取DOM元素的样式并更改该样式。但是这是一个特定的元素。在你的情况下,你仍然需要编写代码遍历一组元素并进行更改。

我的建议是看gwtQuery(一个端口,而不是jQuery的包装器,以GWT)。它超高效,超紧凑。这里是一个班轮做你需要的东西:

$("span.trivial").hide()