在Hover或Click上激活JQuery菜单

时间:2011-05-20 17:42:00

标签: jquery menu click hover hoverintent

我的目标是设置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>

对于代码的格式感到抱歉,感谢您的帮助。

1 个答案:

答案 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函数,否则在单击链接时会产生奇怪的效果。