2010-03-15 24 views
0

Mon menu affiche les liens actifs lorsque vous avez cliqué dessus, sauf pour le lien principal (http://www.obsia.com). Il n'est jamais mis en évidence. J'ai essayé de jouer mais je n'arrive pas à comprendre. C'est le code jquery que j'ai utilisé pour mettre en évidence les liens?Le lien Accueil dans le menu ne s'affiche pas

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

J'ai aussi un autre menu sur le products pages où je voudrais souligner les parents des frères et sœurs et les nos produits dans le menu global. C'est le code de jquery pour le menu de produits:

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

}); });

J'ai essayé d'ajouter ceci:

 $(this).parents('ul').addClass('active'); 

mais cela ne semble pas faire l'affaire?

Est-ce que quelqu'un a un moyen simple de l'accomplir? Toute aide serait appréciée de votre part.

Cordialement, G

Répondre

1

J'ai débogué votre Javascript. Le lien d'accueil ne met pas en surbrillance car, pour la page d'accueil, location.pathname est évalué à la chaîne "/". La variable 'chemin' est donc affectée à la chaîne vide. Cela signifie que la variable 'highlight' n'est pas affectée à.

// 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'); 
+0

Merci Stephen qui fonctionne - Je mets même les parenthèses sur la première déclaration si aussi bien :) – strangeloops

+0

En fait juste vérifié encore une fois, je reçois l'erreur non définie de surbrillance même après avoir utilisé le code corrigé sur la page d'accueil? Est-ce que je fais quelque chose de mal? – strangeloops

+0

En fait juste réparé il merci :) – strangeloops

1

En Firebug je reçois point fort est indéfini sur la ligne }highlight.attr('class', 'active'); semble que vous pourriez avoir besoin de corriger les crochets autour de l'instruction If dessus?

+0

Merci Dave .. J'essaie de résoudre ce problème. C'est le menu du produit - avez-vous des indices sur la raison pour laquelle le lien d'accueil sur le menu global n'est pas surligné alors que tout le reste le fait? – strangeloops

0

Je compris comment obtenir le lien de la page d'accueil pour mettre en surbrillance dans la barre de menu (qui était le seul lien qui ne serait pas mettre en évidence sur la barre de menus). Voici ce que j'ai fait:

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