【问题标题】:Activate JQuery menu on Hover or Click在悬停或单击时激活 JQuery 菜单
【发布时间】: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


【解决方案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 中取消对 click over 功能的绑定,否则点击链接时会产生奇怪的效果。

【讨论】:

  • 我会调查并发布我的发现。谢谢你的建议。
  • 我确实找到了一种方法来解除对 hoverIntent 的 mouseover 和 mouseout 的绑定。您在上面发布的内容我相信是解决这个奇怪问题的最佳方法。谢谢!
  • 以下是取消绑定 hoverIntent 的方法:stackoverflow.com/questions/8151278/…
猜你喜欢
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 2014-08-30
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2014-01-25
相关资源
最近更新 更多