【发布时间】:2011-05-20 17:41:59
【问题描述】:
我的目标是让 JQuery 菜单在悬停或单击时做出响应。使用 HoverIntent 插件,以下代码按预期悬停工作。但是如何在保持用户友好菜单的同时添加点击事件呢?在计划如何编写此代码时,我考虑过在单击菜单项时为悬停事件添加延迟,但是我不确定该实现的实用性。如何将点击事件添加到以下代码中?
<script type="text/javascript">
$(document).ready(function() {
function show() {
var menu = $(this);
menu.children(".options").slideDown();
}
function hide() {
var menu = $(this);
menu.children(".options").slideUp();
}
$(".menuHeader").hoverIntent({
sensitivity: 3,
interval: 50,
over: show,
timeout: 300,
out: hide
});
});
<div id="SideMenu">
<div id="aMenu" class="menuHeader">
<h2>Menu A</h2>
<ul class="options" >
<li><a href="">Option a1</a></li>
<li><a href="">Option a2</a></li>
<li><a href="">Option a3</a></li>
</ul>
</div>
<div id="bMenu" class="menuHeader">
<h2>Menu B</h2>
<ul class="options" >
<li><a href="">Option b1</a></li>
<li><a href="">Option b2</a></li>
<li><a href="">Option b3</a></li>
</ul>
</div>
<div id="cMenu" class="menuHeader">
<h2>Menu C</h2>
<ul class="options" >
<li><a href="">Option c1</a></li>
<li><a href="">Option c2</a></li>
<li><a href="">Option c3</a></li>
</ul>
</div>
</div>
对代码格式的问题感到抱歉,感谢您的帮助。
【问题讨论】:
-
您希望什么是可点击的?如果它是相同的 menuHeader,那么您是否希望它可以点击以覆盖超时? (所以用户在鼠标悬停时不必等待?)
-
我不知道您是否因为移动设备而考虑添加点击处理,但在我的网站上,悬停事件允许移动用户触摸菜单并使其出现 - 不需要点击事件在代码中。只是一个想法,不知道为什么你也想要点击事件。
-
这个问题交给我是为了进一步掌握 JQuery,我没有看到结果被使用过。就个人而言,如果任务是创建一个用户友好的菜单,我将有一个悬停事件来更改链接的文本颜色,但除非单击,否则不会展开菜单。似乎是一种更用户友好的方法。不过,我试图弄清楚如何使用以下意图使其工作:当用户悬停时,菜单会扩展,当前延迟半秒,我需要更改代码以在单击时也扩展。但是,如果没有暂停悬停效果,我同意你们俩的观点,这似乎毫无意义。
标签: jquery menu click hover hoverintent