我正在尝试为
它添加和删除“open”属性,但在Chrome中,“p”元素的可见性保持不变。我做错了什么?这是一个实时示例链接:live example。 更新
details
元素实现 jQuery 回退。如果你从未听说过它,那么它基本上是一个 披露小部件。如果布尔属性 open
存在,则表示要向用户显示摘要和其他信息。如果缺少该属性,则只显示摘要。以下 HTML 和 CSS 实现了这一点。<!-- opened -->
<details open>
<summary>Summary</summary>
<p>Additional information</p>
</details>
<!-- closed -->
<details>
<summary>Summary</summary>
<p>Additional information</p>
</details>
CSS
details summary ~ * {
display: none;
}
details[open] summary ~ * {
display: block;
}
我随后添加了以下jQuery代码,当单击summary
元素时,添加/删除open
属性。
jQuery代码
$("summary").click(function() {
if ($(this).parent().attr("open")) {
$(this).parent().removeAttr("open");
} else {
$(this).parent().attr("open", "open");
}
});
它添加和删除“open”属性,但在Chrome中,“p”元素的可见性保持不变。我做错了什么?这是一个实时示例链接:live example。 更新
- 它在Firefox 4中有效。
- manjii指出,应将“open”更改为“open =“ open””,否则第一次将无法正常工作。BoltClock也提供了另一种解决方案。不过这不是主要问题。
- marcosfromero和BoltClock提出了Chrome动态样式支持的问题,我认为这可能与此有关。
p
的可见性确实会发生变化,因此它仅在第一次单击时出现问题。 - BoltClock