2010-09-13 3 views
0

J'ai mis en place un menu de navigation de style lampe à lave (de here) pour travailler avec le menu de navigation de mon blog WordpPress. Cette fonction doit sélectionner un identifiant ou une classe pour le lien du menu de navigation sur lequel il est censé survoler. Je l'ai mis en place dans le code de la fonction pour sélectionner <li class="current_page_item">, qui est une classe appliquée par WordPress à l'élément de la liste de navigation qui correspond à la page que vous êtes. Le problème est que lorsque vous êtes sur une page post permalien, une page de catégorie ou sur une page plus ancienne, la fonction de lampe à lave ne fonctionne pas car aucun des éléments de la liste de navigation n'a la classe current_page_item car ils sont pas les pages qui sont atteintes par le menu de navigation.jQuery Problème de navigation lampe de lave dans WordPress

Sur ces pages (toutes les pages qui ne se trouvent pas dans le menu nav), je souhaite que le curseur soit défini par défaut sur le lien "home".

La solution la plus simple que je pouvais penser serait d'écrire un morceau de javascript jQuery & qui effectue les opérations suivantes avant de lancer la fonction de lampe de lave: if no <li> has class="current_page_item", then addclass "current_page_item" to first <li> Je ne sais pas assez JS ou jQuery pour écrire ceci.

Merci.

Répondre

1

Vous ne pouvez pas!

nahhh juste une blague, faites-le de cette façon,

$(function(){ 
    var $menu = $('ul#menu'); 

    // look for <li class="current_page_item"> , .length would return greater than zero if there is matched element. 
    if (! $menu.find('.current_page_item').length) { 
     // add the class on the first child if no matched... 
     $menu.children('li:first-child').addClass('current_page_item'); 
    } 

}); 
+0

Ce code fonctionne comme il est censé, mais le problème est que je reçois toujours la même erreur depuis le début: currentPageItem.position() est nulle [Pause sur cette erreur] left: currentPageItem.position(). Left Je suppose que ça ne va pas assez vite au DOM avant que la fonction de la lampe à lave se déclenche. – JJMalina

+0

J'ai mis un setTimeout de 150ms sur la fonction lampe à lave, maintenant ça marche! Merci! – JJMalina