2011-05-20 6 views
0

J'ai une liste ul et je veux ajouter et supprimer des classes avec jQuery. Je veux d'abord tous les liens de la liste pour avoir un niveau supérieur de classe, mais si j'ai un sous-menu dans le ul pour supprimer la classe de premier niveau. Après cela, je veux trouver tous les éléments de la liste avec la classe de premier niveau et envelopper le lien en elle.jQuery - Faire quelque chose après que la classe est supprimée

$("ul#top-menu li").addClass('top-level'); 
$("ul#top-menu li ul.sub-menu li").removeClass('top-level'); 
$('ul#top-menu li.top-level a').wrapInner('<b></b>'); 

Le problème avec ce code est qu'il supprime la classe de l'élément de la liste, mais après l'emballage est ajouté intérieure.

Ma question est de savoir comment exécuter la fonction wrapInner après que toutes les classes sont dans le bon ordre.

Merci!

+1

S'il vous plaît montrer le balisage éventuel prévu – Alnitak

+0

J'ai résolu cela avec l'aide de http://stackoverflow.com/users/97938/rwl, merci! –

Répondre

2

il suffit d'utiliser des sélecteurs plus spécifiques au lieu d'ajouter une classe à chaque li retirer ensuite une classe de ceux imbriqués:

$("ul#top-menu > li").addClass('top-level'); 
$('ul#top-menu > li.top-level > a').wrapInner('<b></b>'); 

Le > (sélecteur d'enfant) signifie « cibler uniquement les enfants directs, tous les enfants. "

+0

Super. Cela va faire l'affaire! Je n'ai jamais su ce qui> représente! Je vous remercie! –

+0

De rien, heureux d'aider! – RwwL

Questions connexes