我的目标是设置JQuery菜单的动画,以便在悬停或点击时进行响应。使用HoverIntent插件,以下代码按预期方式悬停。但是如何在维护用户友好菜单的同时添加点击事件?在计划如何编写时,我考虑在单击菜单项时为悬停事件添加延迟,但是我不确定实现的实际程度。如何将click事件添加到以下代码中?
<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>
对于代码的格式感到抱歉,感谢您的帮助。
答案 0 :(得分:1)
我从未使用过hoverIntent,无论如何解开它?
如果有,你可以这样做:
$(",menuHeader").bind("click.show_menu", function() {
show();
//unbind over from hoverIntent
})
function hide() {
var menu = $(this);
menu.children(".options").slideUp(function() {
//rebind over from hoverIntent on callback from slideUp
});
}
所以你点击了一个链接,它会一直堆叠直到你鼠标移开,然后当你再次悬停它或点击它时它会再次堆叠。
编辑: 您还需要从hoverIntent取消绑定单击over函数,否则在单击链接时会产生奇怪的效果。