似乎您使用错误的类来获取#slidingArrow
script.js @ Line 231 中的位置值:
activeItem = menuList.find('.current_page_item, .current_page_ancestor, .current_page_parent');
我认为你会更适合切换.current_page_item
到.current-menu-item
. 该类.current_page_item
似乎没有在所有页面上填充,因此#slidingArrow
div 元素无法获取任何定位信息。
在 script.js 中,这是我所做的更改menuSlidingArrow()
:
function menuSlidingArrow() {
if(!($j('html').hasClass('oldie'))) {
var mainmenu = $j('.menu-content'),
arrow = $j('#slidingArrow'),
menuList = mainmenu.find('ul.menu'),
activeItem = menuList.find('.current-menu-item, .current_page_ancestor, .current_page_parent'); //remove .current_page_item
$j(window).load(function() {
arrow.css({ 'left':(activeItem.position().left + ((activeItem.outerWidth() - 48)/2) ) -6});
arrow.fadeIn('slow');
});
menuList.children().hover(function(){
arrow.animate({ 'left':($j(this).position().left + (($j(this).outerWidth() - 48)/2) ) -6},
{ queue: false, easing: 'easeOutQuad', duration: 250 });
},function(){
arrow.animate({ 'left':(activeItem.position().left + ((activeItem.outerWidth() - 48)/2) ) -6},
{ queue: false, easing: 'easeOutQuad', duration: 250 });
});
}
}
我还需要以下 CSS 来让它工作:
#menu-main-menu {
margin-left:68px;
}
#menu-item-8197 a { /* hide home navigation item */
color:#fff;
}
#slidingArrow {
margin-left:77px;
}
最后,确保将“主页”页面添加到顶部导航。您将希望将其添加为导航上的第一项。
总而言之,我更改/添加了:
.current_page_item
变成.current-menu-item
- 添加
#slidingArrow { margin-left: 77px; }
, menu-item-8197 a { color:#fff; }
,#menu-main-menu { margin-left:68px; }
- 修改计算以
#slidingArrow
在导航项下居中
- 在导航中添加了主页
- 在导航上隐藏主页导航元素
让我知道这对您是如何工作的,如果您遇到任何错误,我很乐意为您纠正我的答案。