问题:
场景:
let lis = document.querySelectorAll('li');
for (let i = 0; i < lis.length; i++) {
if (lis[i].children.length > 0) {
lis[i].addEventListener('click', function() {
lis[i].children[0].style.display = 'block';
});
}
}
li, ul {
width: max-content;
}
ul > li > ul {
display: none;
}
li {
cursor: pointer;
}
<body>
<ul>
<li>list</li>
<li>list
<ul>
<li>list</li>
<li>list</li>
</ul>
</li>
<li>list
<ul>
<li>list</li>
<li>list</li>
</ul>
</li>
</ul>
</body>
答案 0 :(得分:1)
使用纯JavaScript,以下代码将为您提供帮助。
let lis = document.querySelectorAll('li');
document.getElementById("menuContainer").addEventListener("click", function(event){
for (let i = 0; i < lis.length; i++) {
if(lis[i].children[0]){
lis[i].children[0].style.display = 'none';
}
}
if(event.target.nodeName.toLowerCase() == "li" && event.target.children[0]){
event.target.children[0].style.display = (event.target.children[0].style.display == 'block')?'none':'block';
}
});
ul > li > ul {
display: none;
}
li {
cursor: pointer;
}
<body>
<ul id="menuContainer">
<li>list</li>
<li>list
<ul>
<li>list</li>
<li>list</li>
</ul>
</li>
<li>list
<ul>
<li>list</li>
<li>list</li>
</ul>
</li>
</ul>
</body>
-谢谢
答案 1 :(得分:0)
您可以使用以下命令更新脚本:
let lis = document.querySelectorAll('li');
for (let i = 0; i < lis.length; i++) {
lis[i].addEventListener('click', function () {
$('li').children().css("display", "none");
if (lis[i].children.length > 0) {
lis[i].children[0].style.display = 'block';
}
});
}
答案 2 :(得分:0)
此解决方案对我有帮助。
let lis = document.querySelectorAll('li');
for (let i = 0; i < lis.length; i++) {
if (lis[i].children.length > 0) {
lis[i].addEventListener('click', function(e) {
e.stopPropagation();
lis[i].children[0].style.display = 'block';
});
}
}
window.addEventListener('click', function() {
document.querySelectorAll('body > ul > li').forEach(function(item) {
item.querySelector('ul').style.display = 'none'
})
})
li, ul {
width: max-content;
}
ul > li > ul {
display: none;
}
li {
cursor: pointer;
}
<body>
<ul>
<li>parent1
<ul>
<li>child1</li>
</ul>
</li>
<li>parent2
<ul>
<li>child2</li>
</ul>
</li>
<li>parent3
<ul>
<li>child3</li>
</ul>
</li>
</ul>
</body>