0

尽管有很多类似的问题,但对于我正在寻找的特定案例,我找不到任何东西。

我有一个带有子导航的 wordpress 网站,它在悬停时显示并使用 HoverIntent 进行动画处理。这很好并且效果很好,但是如果在其中一个子页面上,我希望子菜单保持活动状态-但是-如果我将鼠标悬停在我希望该子菜单显示的任何其他父项上-如果没有单击我希望它恢复显示原始子菜单。

这是我的菜单:

<div class="menu-main-navigation-container">
<ul id="menu-main-navigation" class="menu">

<li id="menu-item-90" class="menu-item-90"><a href="http://sitename.com/services/">Services</a>
    <ul class="sub-menu">
        <li id="menu-item-123" class="menu-item-123"><a href="http://sitename.com/services/design/">Desgign</a></li>
        <li id="menu-item-109" class="menu-item-109"><a href="http://sitename.com/services/seo/">SEO</a></li>
        <li id="menu-item-110" class="menu-item-110"><a href="http://sitename.com/services/development/">Development</a></li>
    </ul>
</li>

<li id="menu-item-89" class="menu-item-89"><a href="http://sitename.com/portfolio/">Portfolio</a>
    <ul class="sub-menu">
        <li id="menu-item-113" class="menu-item-113"><a href="http://sitename.com/portfolio/web/">Web</a></li>
        <li id="menu-item-108" class="menu-item-108"><a href="http://sitename.com/portfolio/print/">Print</a></li>
    </ul>
</li>

</ul>
</div>

还有我当前的 jQuery 代码:

// hover intent
var config = {
sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)
interval: 10, // number = milliseconds for onMouseOver polling interval
over: doOpen, // function = onMouseOver callback (REQUIRED)
timeout: 500, // number = milliseconds delay before onMouseOut
out: doClose // function = onMouseOut callback (REQUIRED)
};

function doOpen() {
    jQuery(this).addClass("hover");
    jQuery('ul:first',this).fadeIn();
}
function doClose() {
    jQuery(this).removeClass("hover");
    jQuery('ul:first',this).fadeOut();
}
jQuery("#menu-main-navigation li").hoverIntent(config);

任何建议将不胜感激!

4

1 回答 1

1

在这种情况下:您需要知道您在哪个页面上。
假设我们在“网页”页面上。
添加: <div id='page_web'></div>
在页面的开头。

然后,在 JS 中:

if ($('#page_web').length > 0){
  jQuery("#menu-main-navigation li:first").hoverIntent(config);
} else {  
  jQuery("#menu-main-navigation li").hoverIntent(config);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
}

这当然只是一个建议,还有其他方法可以做到这一点。
我已经更新了 fiddle。希望这可以帮助。

于 2012-10-02T21:11:14.013 回答