我正在尝试在WordPress多站点安装上设置持久的网络范围菜单。这是使用Network wide menu plugin实现的,效果很好。唯一的问题是样式,因为自动“current-menu-item”类只在主博客上嵌入到相应的菜单链接中。
所以我调查了.addClass()函数,根据当前的URL获取添加到菜单项的类,这是我到目前为止所提出的。请记住,我也试图突出显示父项,这也是我使用.parentsUntil()类的原因。
这是我的网络设置(每个域对应一个WordPress实例):
domain.com
blog1.domain.com
blog1.domain.com
blog1.domain.com
这是我的jQuery代码:
jQuery(function() {
jQuery('#megaUber ul li').removeClass('activeMenu');
var href = window.location.href;
if (href.indexOf('http://domain.com) != -1) {
jQuery('#megaUber a').parentsUntil('.ss-nav-menu-item-depth-0').addClass('activeMenu');
} else if (href.indexOf("http://blog1.domain.com") != -1) {
jQuery('#megaUber li a[href="'+href+'"]').parentsUntil('.ss-nav-menu-item-depth-0').addClass('activeMenu');
} else if (href.indexOf("http://blog2.domain.com") != -1) {
jQuery('#megaUber li a[href="'+href+'"]').parentsUntil('.ss-nav-menu-item-depth-0').addClass('activeMenu');
} else if (href.indexOf("http://blog3.domain.com") != -1) {
jQuery('#megaUber li a[href="'+href+'"]').parentsUntil('.ss-nav-menu-item-depth-0').addClass('activeMenu');
}
});
HTML菜单标记
<div id="megaMenu">
<ul id="megaUber" class="megaMenu" data-theme-location="primary">
<li id="menu-item-20" class="nav-cgroupe menu-item menu-item-type-post_type menu-item-object-page current-page-ancestor current-menu-ancestor current-menu-parent current-page-parent current_page_parent current_page_ancestor mega-with-sub ss-nav-menu-item-1 ss-nav-menu-item-depth-0 ss-nav-menu-mega ss-nav-menu-mega-alignCenter ss-nav-menu-with-desc">
<a href="http://domain.com">domain.com</a>
<ul class="sub-menu sub-menu-1" style="display: none;">
<li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page ss-nav-menu-item-depth-1">
<a href="http://domain.com/link1">Link1</a>
</li>
<li id="menu-item-24" class="menu-item menu-item-type-post_type menu-item-object-page ss-nav-menu-item-depth-1">
<a href="http://domain.com/link2">Link2</a>
</li>
<li id="menu-item-23" class="menu-item menu-item-type-post_type menu-item-object-page ss-nav-menu-item-depth-1">
<a href="http://domain.com/link3">Link3</a>
</li>
</ul>
</li>
<li id="menu-item-26" class="nav-cconseil menu-item menu-item-type-custom menu-item-object-custom mega-with-sub ss-nav-menu-item-2 ss-nav-menu-item-depth-0 ss-nav-menu-mega ss-nav-menu-mega-alignCenter ss-nav-menu-with-desc">
<a href="http://blog1.domain.com">blog1.domain.com</a>
<ul class="sub-menu sub-menu-1" style="display: none;">
<li id="menu-item-53" class="menu-item menu-item-type-custom menu-item-object-custom ss-nav-menu-item-depth-1">
<a href="http://blog1.domain.com/link1">Link1</a>
</li>
<li id="menu-item-54" class="menu-item menu-item-type-custom menu-item-object-custom ss-nav-menu-item-depth-1">
<a href="http://blog1.domain.com/link2">Link2</a>
</li>
<li id="menu-item-55" class="menu-item menu-item-type-custom menu-item-object-custom ss-nav-menu-item-depth-1">
<a href="http://blog1.domain.com/link3">Link3</a>
</li>
</ul>
</li>
</ul>
</div>
我已经扭曲了许多不同的方式而且无法做到正确......有人知道如何实现这个目标吗?
谢谢你, 下进行。
答案 0 :(得分:1)
试试这个:
$('#megaUber li a').filter(function () {
return this.href && this.href == location.href;
}).parentsUntil('.ss-nav-menu-item-depth-0').addClass('activeMenu');
第二行按两个标准过滤元素集:
他们必须拥有一个带域名的href属性(this.hostname)。
他们链接到的域名(同样,this.hostname)必须匹配 (==)当前页面的域名(location.hostname)。
<强>更新强>
$('#megaUber > li > a').filter(function () {
return this.href && this.href == location.href.slice(0, -1);
}).parentsUntil('.ss-nav-menu-item-depth-0').addClass('activeMenu');