Cai*_*uke 6 html html-tag-details
下面的代码几乎可以达到目的。如果您打开任何详细信息标签,然后单击其外部的任何位置,它将关闭。但是,当新的详细信息标签打开时,当前打开的详细信息标签不会关闭。
var details = [...document.querySelectorAll('details')];
document.addEventListener('click', function(e) {
if (!details.some(f => f.contains(e.target))) {
details.forEach(f => f.removeAttribute('open'));
}
})
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
谢谢。
Spe*_*ric 12
您可以检查目标是否是details
标签,如果不是,则关闭所有details
标签。
如果是,则仅关闭那些没有事件目标作为子级的目标。
var details = [...document.querySelectorAll('details')];
document.addEventListener('click', function(e) {
if (!details.some(f => f.contains(e.target))) {
details.forEach(f => f.removeAttribute('open'));
} else {
details.forEach(f => !f.contains(e.target) ? f.removeAttribute('open') : '');
}
})
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3445 次 |
最近记录: |