首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery鼠标悬停的问题,以获得更好的外观

jQuery鼠标悬停的问题,以获得更好的外观
EN

Stack Overflow用户
提问于 2009-08-19 18:25:49
回答 1查看 1.7K关注 0票数 0

我在我的网站上有一个水平菜单,使用的是drupal中的漂亮菜单。当您将鼠标悬停在安莉元素上时,将为显示的链接设置背景图像。我遇到的问题是,当您将鼠标悬停在父菜单项的子项上时,此图像将消失。正在消失的图像使用此css样式进行设置:

代码语言:javascript
复制
  ul.nice-menu li a:hover, ul.nice-menu li.active a {
    background: url(images/bg-li-active.png) no-repeat scroll left bottom;
  }

  ul.nice-menu li * a:hover, ul.nice-menu li.active * a {
    background: none repeat;
    color:#000000;
  }

我已经设置了jsbin来测试这个:http://jsbin.com/ogegu

它看起来像预期的那样工作。菜单展开,只有父元素似乎在子级ul上时发生了变化。但是,当我使用实际尝试设置背景图像的代码时,png不会出现。

菜单看起来像这样(在http://jsbin.com/ogegu上查看jsbin演示):

代码语言:javascript
复制
<div class="content">  
  <ul class="nice-menu nice-menu-down" id="nice-menu-1"><li id="menu-240" class="menu-path-front"><a href="/" title="" class="active">Home</a></li>  
    <li id="menu-660" class="menu-path-node-20"><a href="/content/about-us" title="About Us">About Us</a></li>  
    <li id="menu-238" class="menuparent menu-path-node-3"> 
      <a href="/services" title="">Services</a> 
      <ul> 
        <li id="menu-988" class="menu-path-node-29"><a href="/content/business-advisory" title="Business Advisory">Business Advisory</a></li>  
        <li id="menu-244" class="menu-path-node-10"><a href="/content/network-design" title="Network Design">Network Design</a></li>  
      </ul>  
    </li>  
    <li id="menu-239" class="menu-path-node-2"><a href="/content/clients" title="">Clients</a></li>  
    <li id="menu-327" class="menu-path-partners"><a href="/partners" title="">Partners</a></li>  
    <li id="menu-631" class="menu-path-principals"><a href="/principals">Principals</a></li>  
  </ul>  
</div>  

下面是我尝试使用的实际JavaScript:

代码语言:javascript
复制
jQuery(document).ready(function(){
  jQuery('#nice-menu-1 li ul').hide();
  jQuery('#nice-menu-1 li.menuparent').hover(function() {
      jQuery(this).children('ul').show('fast');
      jQuery(this).children('a:eq(0)').css({ "background": "url(images/bg-li-active.png) no-repeat scroll left bottom"});
      return false;
  },
  function() {
      jQuery(this).children('ul').hide('fast');
      jQuery(this).children('a:eq(0)').css({"background": "none"});
      return false;
  });
});

我刚开始使用jQuery,有没有人能给我提个建议,为什么它不能像我预期的那样运行?理想情况下,我希望将鼠标悬停在menuparent或menuparent的子项上,以设置第一个标记的背景。更好的解决方案是只使用css而不使用JavaScript。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-19 18:53:32

您需要将子元素包装在父元素中,然后只对父元素执行.hover操作。由于子对象位于父对象内部,因此当您悬停这些子对象时,您仍然停留在父对象上。请参阅此示例http://www.bunchacode.com/programming/shadow-menu/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1301777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档