【发布时间】:2021-04-22 19:01:40
【问题描述】:
我有以下 html 用于 3 个下拉清单(单击锚跨度以使未编号列表可见)
for (var checkList of document.querySelectorAll('.dropdown-check-list')) {
checkList.getElementsByClassName('anchor')[0].onclick = function(evt) {
if (checkList.classList.contains('visible'))
checkList.classList.remove('visible');
else
checkList.classList.add('visible');
}
}
.dropdown-check-list {
display: inline-block;
}
.dropdown-check-list .anchor {
margin-top: 6px;
width: 357px;
position: relative;
cursor: pointer;
display: inline-block;
padding: 5px 50px 5px 10px;
border: 1px solid #ccc;
}
.dropdown-check-list ul.items {
padding: 2px;
display: none;
margin: 0;
border: 1px solid #ccc;
border-top: none;
}
.dropdown-check-list.visible .items {
display: block;
}
<div id="list1" class="dropdown-check-list" tabindex="100">
<span class="anchor">Expired Metadata<span class="count">20</span></span>
<ul class="items"> ... </ul>
</div>
<div id="list2" class="dropdown-check-list" tabindex="100">
<span class="anchor">Unregistered Groups<span class="count">20</span></span>
<ul class="items"> ... </ul>
</div>
<div id="list3" class="dropdown-check-list" tabindex="100">
<span class="anchor">Unregistered Teams<span class="count">20</span></span>
<ul class="items"> ... </ul>
</div>
但是,当我单击任何锚点跨度时,它只会打开最后一个列表 (div.list3)。跨度不对应于正确的列表。有没有办法解决这个问题?
【问题讨论】:
-
请注意,
classList.toggle('visible')的作用与您拥有的整个if/else块相同。
标签: javascript css