如何使 JS 菜单在悬停或单击时打开
How to make a JS menu open on hover OR on click
我有一个JS+CSS菜单,在鼠标悬停时完美运行,但我必须让它也适用于触摸设备的点击。
菜单是这样的:
<div id="menucontainer">
<ul id="jsddm">
<li class="topmenu"><a href="#">Main Menu</a>
<ul style="visibility: hidden;">
<li><a href="http://www.google.com">Google</a></li>
<li><a href="http://www.apple.com">Apple</a></li>
<li><a href="http://www.microsoft.com">Microsoft</a></li>
</ul>
</li>
</ul>
</div>
和JS:
$(document).ready(function () {
$('#jsddm > li').bind('mouseover', jsddm_open);
$('#jsddm > li').bind('mouseout', jsddm_timer);
// this work, but the submenus dont click
$('.topmenu').bind('click', jsddm_open);
});
尝试了不同的方法,但没有成功
工作示例在这里:http://jsfiddle.net/xjuZ4/
将点击处理程序放在<a>
标记上。通过将点击处理程序放在顶级 <li>
标记上,您可以拦截对子<li>
标记的任何单击,因为单击子<li>
标记也会单击父<li>
标记。
您需要在 <a>
标记上的单击处理程序中添加e.stopPropagation();
,以阻止触发悬停。
您很可能还希望使用 JQuery 方法.parent()
来查找触发click
方法时<a>
所在的<li>
。
更新了具有多个下拉菜单的 JSFiddle。
删除 javascript 中的$('.topmenu').bind('click', jsddm_open);
,因为您在标签 <a>
中调用链接。
相关文章:
- OpenLayers在悬停时高亮显示功能,并在单击时选择
- 使用Jquery创建一个具有单击和悬停功能的菜单
- 只要用户将鼠标悬停在jQuery中的某个元素上,就可以执行多次单击
- 悬停时展开垂直下拉菜单,而不是单击
- Highcharts-在单击而不是悬停时显示工具提示
- 如何使单击时的下拉列表不悬停
- 如何激活下拉菜单:在一个元素上单击768px宽度下方,在另一个元素上将鼠标悬停在768px上方
- 如何使Highcharts中的渲染标签始终可见,并且相对于单击或悬停的点仍然可见
- 在可视化中将CSS从悬停更改为单击
- 鼠标悬停事件不会触发以触发 D3 中的单击事件
- 在单击按钮时激活按钮的悬停状态,直到单击另一个按钮(Javascript/JQuery)
- 悬停时无法单击锚标记,但其显示链接
- Jquery Resize问题.如果宽度小于768宽度,请启用“单击选项”.768以上鼠标悬停选项启用
- 如何防止Jquery colorbox组在单击或鼠标悬停时启动
- 切换悬停和单击无法正常工作
- 如果释放鼠标时内部元素未悬停,则防止触发“单击”的正确方法
- fadeIn在悬停时工作,但在单击/单击时不工作
- 单击后使CSS悬停元素永久化
- VBA单击悬停下拉菜单
- Chrome扩展-在单击/悬停时更改弹出图标