我的菜单显示点击它时的活动链接,主页链接除外(http://www.obsia.com)。永远不会突出显示。 我试过玩,但我似乎无法弄明白。这是我用来突出链接的jquery代码?
$(function(){
var path = location.pathname.substring(1);
if ( path )
$('.nav a[href$="' + path + '"]').attr('class', 'active');
});
我还在products pages上有另一个菜单,我想在全局菜单上突出显示兄弟姐妹的父母和我们的产品。这是产品菜单的jquery代码:
$(function() {
var pathname = location.pathname;
var highlight;
//highlight home
if(pathname == "")
highlight = $('ul#accordion > li:first > a:first');
else {
var path = pathname.substring(1);
if (path)
highlight = $('ul#accordion a[href$="' + path + '"]');
}highlight.attr('class', 'active');
// hide 2nd, 3rd, ... level menus
$('ul#accordion ul').hide();
// show child menu on click
$('ul#accordion > li > a.product_menu').click(function() {
//minor improvement
$(this).siblings('ul').toggle("slow");
return false;
});
//open to current group (highlighted link) by show all parent ul's
$('a.active').parents('ul').show();
$('a.active').parents('h2 a').css({'color':'#ff8833'});
//if you only have a 2 level deep navigation you could
//use this instead
//$('a.selected').parents("ul").eq(0).show();
}); });
我尝试添加这个:
$(this).parents('ul').addClass('active');
但这似乎不起作用?
有人有简单的方法来完成它吗? 任何帮助都会受到你们的赞赏。
亲切的问候, ģ
答案 0 :(得分:1)
在Firebug中我在行}highlight.attr('class', 'active');
上得到突出显示未定义,看起来您可能需要纠正上面的If语句周围的括号?
答案 1 :(得分:1)
我调试了你的Javascript。主链接不突出显示,因为对于主页,location.pathname被计算为字符串“/”。因此,变量'path'被赋予空字符串。这意味着变量'highlight'未分配给。
// path is assigned the empty string
var path = location.pathname.substring(1);
// evaluating to false
if (path) {
// we never get here
highlight = $('ul#accordion a[href$="' + path + '"]');
}
// getting a null pointer exception
highlight.attr('class', 'active');
答案 2 :(得分:0)
我想出了如何让菜单栏中的主页链接突出显示(这是唯一不会在菜单栏上突出显示的链接)。这是我做的:
$(function(){
var pathname = location.pathname;
var path = pathname.substring(1);
if(path == "")
$('.nav a:first').addClass('active');
else (path)
$('.nav a[href$="' + path + '"]').attr('class', 'active');
});