Mobile Nav:关闭所有打开的条目

问题描述 投票:0回答:1

看看我的笔:https://codepen.io/QJan84/pen/NXVgop

我在这里有一个问题,我正在寻找一个可靠的解决方案。如果菜单项(仅第一级)打开,则应事先关闭所有先前打开的菜单项。只有一个菜单项(仅第一级)应该是活动的。

对于所有ulnm__lvl nm__lvl--expanded类,nm__lvl--expanded必须换成nm__lvL--collapsed。对?!还必须确保仅完成关闭转换,然后打开当前菜单项。关闭和打开应该一个接一个地发生。最后一个问题,我怎么能改进我的剧本?脚本的表现好吗?有什么可以改进的?我目前正在从jquery切换到ES6,这并不容易。

javascript ecmascript-6 selectors-api
1个回答
0
投票

正如您在此fiddle中所看到的,我在您的代码中添加了一个新功能,它提供了您正在寻找的功能。

//[...]
let nextNode = ele.nextElementSibling,
    prevNode = ele.previousElementSibling;

hideOtherSubMenus(prevNode);
prevNode.classList.toggle("nm__lvl__entry--active");
// [...]

function hideOtherSubMenus(elem) {
    var parentUl = elem.parentElement.parentElement;
  var activeSiblings = parentUl.querySelectorAll(".nm__lvl__entry.nm__lvl__entry--active");

  for (var i = 0; i < activeSiblings.length; i++) {
    var sibling = activeSiblings[i]; console.log(sibling);
    var btn = sibling.nextElementSibling;

    btn.click();
  }
}

它可能不是最好的解决方案,但我想出的最好的解决方案。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.