MDCWeb:多个简单菜单

MDCWeb:多个简单菜单,web,material-components,material-components-web,Web,Material Components,Material Components Web,我在网上使用谷歌材料组件,但“简单菜单”有问题。检查我的代码笔:[每页有多个菜单?][1] [1]: https://codepen.io/QJan84/pen/govRmg 第一个菜单有效,其他菜单无效。 如果每页有多个菜单,我该怎么办?您正在使用菜单和切换,但它将仅返回分别匹配“.mdc simple menu”和“.js--toggle dropdown”的第一个节点元素 相反,您应该使用它返回节点列表,您需要这样做 我将您的示例菜单和切换包装到容器中,以便更轻松地选择切换 因此,最终结

我在网上使用谷歌材料组件,但“简单菜单”有问题。检查我的代码笔:[每页有多个菜单?][1]

[1]: https://codepen.io/QJan84/pen/govRmg
第一个菜单有效,其他菜单无效。 如果每页有多个菜单,我该怎么办?

您正在使用菜单和切换,但它将仅返回分别匹配“.mdc simple menu”和“.js--toggle dropdown”的第一个节点元素

相反,您应该使用它返回节点列表,您需要这样做

我将您的示例菜单和切换包装到容器中,以便更轻松地选择切换

因此,最终结果可能如下所示:

const menuEls = Array.from(document.querySelectorAll('.mdc-simple-menu'));

menuEls.forEach((menuEl) => {
  // Initialize MDCSimpleMenu on each ".mdc-simple-menu"
  const menu = new mdc.menu.MDCSimpleMenu(menuEl);

  // We wrapped menu and toggle into containers for easier selecting the toggles
  const dropdownToggle = menuEl.parentElement.querySelector('.js--dropdown-toggle');
  dropdownToggle.addEventListener('click', () => {
    menu.open = !menu.open;
  });
});
您可以。

您正在用于菜单和切换,但它将仅返回分别匹配“.mdc simple menu”和“.js--toggle dropdown”的第一个节点元素

相反,您应该使用它返回节点列表,您需要这样做

我将您的示例菜单和切换包装到容器中,以便更轻松地选择切换

因此,最终结果可能如下所示:

const menuEls = Array.from(document.querySelectorAll('.mdc-simple-menu'));

menuEls.forEach((menuEl) => {
  // Initialize MDCSimpleMenu on each ".mdc-simple-menu"
  const menu = new mdc.menu.MDCSimpleMenu(menuEl);

  // We wrapped menu and toggle into containers for easier selecting the toggles
  const dropdownToggle = menuEl.parentElement.querySelector('.js--dropdown-toggle');
  dropdownToggle.addEventListener('click', () => {
    menu.open = !menu.open;
  });
});
你可以