【发布时间】:2020-05-03 05:19:51
【问题描述】:
我正在做一个项目,最糟糕的是我无法编辑我的项目的 HTML 代码。我只能编辑 CSS/JavaScript。我的项目是我有一个使用<ul><li>... 的菜单列表,其中也有子列表。完整的 HTML 代码如下...
<ul class="main_list">
<li class="parent">
<a href="##########">Menu-1</a>
<ul class="children">
<li><a href="##########">SubMenu-1</a></li>
<li><a href="##########">SubMenu-2</a></li>
<li><a href="##########">SubMenu-3</a></li>
</ul>
</li>
<li><a href="##########">Menu-2</a></li>
<li><a href="##########">Menu-3</a></li>
<li><a href="##########">Menu-4</a></li>
<li class="parent">
<a href="##########">Menu-5</a>
<ul class="children">
<li><a href="##########">SubMenu-1</a></li>
<li><a href="##########">SubMenu-2</a></li>
<li><a href="##########">SubMenu-3</a></li>
</ul>
</li>
</ul>
这是我无法编辑的 HTML 代码。我只能编辑或添加 CSS/JavaScript。在这里,我想隐藏所有 children 菜单,并在单击父菜单时显示。但是当我们点击那里的父菜单时,它会转到父菜单上的外部链接。那么有什么办法或解决方案...???
更新:
请记住,我也希望父菜单链接也能正常工作。我有一个想法,在父菜单前面添加一些文本,例如show/hide,并制作一些 JavaScript 来打开其子菜单,在这种情况下,如果我们直接单击父菜单链接,它也将起作用。现在我们可以使用 JavaScript 在父菜单前面添加一些文本/图标,因为我无法编辑 HTML 吗?
【问题讨论】:
-
让子菜单在
:hover上出来?如果这不是一个可能的解决方案,请创建一个 JSFiddle,以便我们可以使用它。 -
event.preventDefault()在您的点击功能中 -
@Rvervuurt 是的,我可以用
:hover处理它,但我想在点击后保持打开状态。 -
@empiric 我也希望父菜单链接也能正常工作... :(
-
打开菜单并保持父链接正常工作似乎是相互矛盾的目标。如果单击菜单项打开子菜单,则父链接不应该工作(否则浏览器会在用户与子菜单交互之前导航离开页面)。您可以在具有子项的菜单项旁边附加某种下拉箭头 - 单击父项将导航到它的链接,但单击箭头会打开子菜单。
标签: javascript jquery html css menu