这是我拥有的一些标记的简单示例:
HTML:
<input type="checkbox" name="ex1">
<input type="checkbox" name="ex2">
<ul class="reveal">
<li><a href="#">Hi</a></li>
<li><a href="#">Bye</a></li>
</ul>
复选框用作过滤器以删除<li>
带有某些标签的 s。这一切都很好。我的问题是,当复选框被选中并且过滤器逻辑运行时,它使用 adisplay:none
来删除特定<li>
的 s 但我用来格式化的 css 在事后没有正确应用。例如,假设单击第一个复选框会删除第一个复选框<li>
,而“再见”<li>
是唯一剩下的复选框。这样可以正常工作,但是我在 css 中定义的边框仍然存在,即使选择器不再匹配它。这是我使用的选择器:
CSS:
#columns .calendar td ul.reveal li + li {
border-top: 1px dotted #999;
}
这种样式一开始是正确应用的,但是在display:none
应用之后并且“再见”li是唯一剩下的li,它仍然会有虚线边框。
我已经使用浏览器开发者控制台进行了检查,这确实是用于创建边框的唯一样式规则。
我已经阅读了一些关于display:none
不重新绘制 DOM 的内容,并访问了一个强制浏览器重新绘制的变量(类似于 $('whatever')[0].offsetHeight),但这似乎不能解决我的问题。