Главная ссылка в меню не выделяется - PullRequest
0 голосов
/ 15 марта 2010

Мое меню показывает активные ссылки при щелчке по нему, за исключением домашней ссылки (http://www.obsia.com). Оно никогда не подсвечивается. Я пытался играть, но я не могу понять это. Это код jquery, который я использовал, чтобы выделить ссылки?

 $(function(){
   var path = location.pathname.substring(1);
   if ( path )
     $('.nav a[href$="' + path + '"]').attr('class', 'active');   
 });

У меня также есть другое меню на страницах продуктов , где я хотел бы выделить родителей братьев и сестер и наши продукты в глобальном меню. Это код 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');

но, похоже, это не помогает?

У кого-нибудь есть простой способ сделать это? Ребята, будем благодарны за любую помощь.

С уважением, G

Ответы [ 3 ]

1 голос
/ 15 марта 2010

Я отладил твой 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');
1 голос
/ 15 марта 2010

В Firebug я получаю выделение не определено в строке }highlight.attr('class', 'active'); похоже, что вам может потребоваться исправить скобки вокруг оператора If над ним?

0 голосов
/ 16 марта 2010

Я понял, как заставить ссылку на главную страницу выделять в строке меню (это была единственная ссылка, которая не выделялась в строке меню). Вот что я сделал:

 $(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');   
 });
...