【问题标题】:how to remove hyperlink on menu's icon but it should open submenu?如何删除菜单图标上的超链接,但它应该打开子菜单?
【发布时间】:2021-12-28 06:10:37
【问题描述】:

我的问题是当我点击菜单的图标(如加号或下拉菜单)时,如果它有任何链接,它不应该移动到页面,但它首先显示子菜单,然后只 我已经应用了这个 JS:

let plus = document.querySelectorAll(".menu-item > a");
console.log(plus);
for (var i = 0; i < plus.length; i++){
  console.log(plus[i]);
  plus[i].addEventListener("click",(e)=>{
    let plusParent = e.target.parentElement;
    console.log(plusParent);    
    plusParent.classList.toggle("showMenu");
  });
}

in this image you can check where I want to open submenu on click icon's but not redirect to parent icon's link

【问题讨论】:

  • this,你在想什么?
  • 是的,但它不适用于我的代码

标签: javascript jquery menu navigation


【解决方案1】:

我认为你需要先防止标签事件,这样它就不会跳转到链接。你可以使用 e.preventDefault() 来做同样的事情。

let plus = document.querySelectorAll(".menu-item > a");
console.log(plus);
for (var i = 0; i < plus.length; i++){
  console.log(plus[i]);
  plus[i].addEventListener("click",(e)=>{
    if (e.target.classList.contains('fa-plus')) {
      e.preventDefault(); // prevent link to open new page because plus icon is clicked
    }

    let plusParent = e.target.parentElement;
    console.log(plusParent);    
    plusParent.classList.toggle("showMenu");
  });
}

【讨论】:

  • 您好 Farz,感谢您的回答,它工作正常。只是另一个疑问,现在如果我单击该链接,它似乎根本不起作用:组(菜单项)(它具有我们根据您的代码阻止的链接)活动成员
  • 您有单独的链接和加号图标吗?并且您希望链接单击打开链接,但单击加号只会打开子菜单或什么?我想我无法正确理解你的问题。您能否详细说明一下,或者只是发布一些参考照片。
  • prnt.sc/24x64ax(这是我正在尝试做的链接)这是代码:
  • buddyx.local/groups/">Groups</a><buttonclass="dropdown-toggle" aria- expand="false" aria-label="展开子菜单">
  • 如你所见李(群有链接)
  • 知道了,解决方案是您需要有条件地使用 e.preventDefault() ,即如果单击的元素(e.target)具有类 fa-plus 则阻止事件,否则不要阻止它.类似 if (e.target.classList.contains('fa-plus') { e.preventDefault() }
  • 我用您的问题的有效解决方案更新了我的答案。请看一下,如果您有更多帮助,请告诉我。
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签