如何修复在最小化菜单中不起作用的链接?

Posted

技术标签:

【中文标题】如何修复在最小化菜单中不起作用的链接?【英文标题】:How can I fix links that don't work in a minimized menu? 【发布时间】:2022-01-08 12:57:58 【问题描述】:

我有一个非常典型的菜单,其中最上面的项目有孩子,当你翻身时会飞出来。在 992 像素以上工作得很好。低于 992,您应该单击/点击顶部项目以获取弹出窗口。效果很好,您可以在链接预览中获得指针甚至文件名。但是当您单击/点击时,它只会停留在同一页面上并且弹出窗口会折叠。我唯一能找到的是javascript中的以下语句。如果您将其删除,则弹出按钮根本不起作用。如果您删除 && e.preventDefault(),顶部链接会起作用,但不会弹出。

document.addEventListener("click",function(e)
   e.target.closest(".menu-item-has-children") && window.innerWidth <= 992 && e.preventDefault()
)

https://dmvnv.com/2021/

【问题讨论】:

很有趣,我不知道为什么,也许设计是为了在小屏幕上没有弹出窗口(我注意到 _media.scss // Tablets and small desktops $screen-lg-min: 992px; 中提到了 992px) 【参考方案1】:

找到答案了。

preventDefault 会从父代传递给子代(就像让你眼花缭乱的坏基因一样)。

您需要停止传播。在这种情况下,子项是具有子菜单类的第二个无序列表中的列表项。

    $('.sub-menu').on("click", function(e)
        e.preventDefault();
     ).children().click(function(e)  // catch all children click
        e.stopPropagation();
     );

Javascript, Stop preventDefault() to pass to child element

【讨论】:

以上是关于如何修复在最小化菜单中不起作用的链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 Typescript linting 在 VSCode 中不起作用?

引导模式在下拉菜单中不起作用

引导下拉菜单在母版页中不起作用

CSS 菜单下拉菜单在 IE8 中不起作用

Bootstrap modal event.relatedTarget 在下拉菜单中不起作用

固定导航菜单在IE 11或Edge中不起作用