/* toggle click function for submenus */
slideToggle=(el)=> {
let submenuParentListElement = el,
listItems = document.querySelectorAll('div > ul > li > ul > li');
listItems.forEach(function(el) {
if (el === linkParentListElement) {
// set display: block to its direct child <ul>
} else {
// set display: block to its direct child <ul>
}
});
}
3条答案
按热度按时间68bkxrlz1#
我试着理解你的代码来改进它,但是几个小时后就放弃了这个想法。但是,为了不给予自己,这里有一个你可以使用的变通方法...
我希望至少我的代码将帮助您在未来简化您的。
第一个
xqkwcwgp2#
你好朋友Bitski和先生Jojo,最后我找到了一个解决方案,它是如下.请看一下,让我知道你的意见,我可以如何改进它.谢谢你们两个宝贵的时间花在我身上.谢谢你们!!!
第一个
mnowg1ta3#
您需要在菜单上循环两次,以便:
1.设置click-eventListeners(你用
submenuToggle()
做的不错),但是click事件监听器的回调需要一个修正。它需要把被点击链接的父<li>
元素设置为参数。参数:
已编辑的事件侦听程式:
1.根据它的兄弟
<a>
是否被点击来设置每个子菜单的显示属性。使用forEach()
方法使其在具有子菜单的<li>
上循环。在该方法的回调中,比较每个项目,如果它是在aka内点击链接的项目,如果它是linkParentListElement
:如果(真):将其直接子代x1M6n1x样式设置为x1M7n1x,
if(false):将其直接子项
<ul>
的样式设置为display: none;
。