下面的这段代码几乎可以解决问题。如果您打开任何详细信息标签,然后单击它之外的任何位置,它将关闭。但是,当前打开的详细信息标签不会在新的详细信息标签打开时关闭。
var details = [...document.querySelectorAll('details')];
document.addEventListener('click', function(e) {
if (!details.some(f => f.contains(e.target))) {
details.forEach(f => f.removeAttribute('open'));
}
})
<details>
<summary>Details 1</summary>
<p>content</p>
</details>
<details>
<summary>Details 2</summary>
<p>content</p>
</details>
<details>
<summary>Details 3</summary>
<p>content</p>
</details>
我错过了什么?
谢谢你。