0

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

对不起,代码的格式,并感谢您的帮助。

4

1 回答 1

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
  });
}

所以你点击了一个链接,它会堆叠,直到你鼠标悬停,然后当你再次悬停它或点击它时,它会再次堆叠。

Edit: You also need to unbind click on over function from the hoverIntent or it will cause a weird effect when you click the link.

于 2011-05-20T17:51:25.427 回答