保持wordpress子菜单打开几秒钟

时间:2012-08-29 20:18:46

标签: css wordpress menu

我有一个像这样的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/

现在,如果你翻看“moo”子菜单,将显示foo和bar。我现在的目标是保持该子菜单打开,让鼠标移出“moo”-link-area后说2s。我怎么能这样做?

我将不胜感激任何帮助!

2 个答案:

答案 0 :(得分:1)

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

$('#top_menu li').hover(function(){
    $('.sub-menu', this).show();
}, function(){
    $('.sub-menu', this).delay(2000).hide();
});

答案 1 :(得分: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);
});​​​