0

我有一个这样的 wordpress 菜单:

<div id="top_menu">
  <ul class="menu">
    <li id="menu-item-1" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1"><a href="moo">moo</a>
      <ul class="sub-menu">
        <li id="menu-item-2" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2"><a href="foo">foo</a></li>
        <li id="menu-item-3" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3"><a href="bar">bar</a></li>
      </ul>
    </li>
    <li id="menu-item-4" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4"><a href="baz">baz</a></li>
  </ul>
</div>

样式如下:

#top_menu ul li ul{
    z-index: 9999;
    position: absolute;
    left: -999em;
    height: auto;
    top:80px;
    width:auto;
    clear:both;
    border:0;
    border-top:none;
}
#top_menu ul li li {
    margin:0px;
    padding:0px;
    background:none;
    width:auto;
}

#top_menu ul li ul a { 
    width:auto;
    line-height:26px;
    font-size:16px;
    display:block;
    text-align:left;
    text-shadow: none;
}
#top_menu ul li:hover ul ul, #top_menu ul li:hover ul ul ul, #top_menu ul li.sfhover ul ul, #top_menu ul li.sfhover ul ul ul {
    left: -999em;
}
#top_menu ul li:hover ul, #top_menu ul li li:hover ul, #top_menu ul li li li:hover ul, #top_menu ul li.sfhover ul, #top_menu ul li li.sfhover ul, #top_menu ul li li li.sfhover ul {
    left: auto;
}
#top_menu ul li:hover, #top_menu ul li.sfhover { 
    position: static;
}

你可以在这里看到它:http: //jsfiddle.net/JBXLr/1/

现在,如果您使用 foo 和 bar 浏览“moo”子菜单,将会显示。我现在的目标是在鼠标移出“moo”链接区域后保持该子菜单打开 2 秒。我怎样才能做到这一点?

我将不胜感激任何帮助!

4

2 回答 2

1

使用 javascript (jQuery) 显示子菜单并应用delay()

$('#top_menu li').hover(function(){
    $('.sub-menu', this).show();
}, function(){
    $('.sub-menu', this).delay(2000).hide();
});
于 2012-08-29T20:23:18.047 回答
0

因为你提到了css,所以要发布这个。http://jsfiddle.net/JBXLr/3/使用 css3 转换来实现你想要的。

这是使用 jquery 和您当前的 css 的替代 javascript 解决方案。

​​​​$("li").mouseout(function(){
    var uls =$(this).children("ul");
    uls.css("left","auto");
setTimeout(function(){ uls.css("left",""); }, 2000);
});​​​
于 2012-08-29T20:49:00.663 回答