2009-12-23 3 views
1
$('fieldset.one label, fieldset.two label').each(function() { 
    var className = $(this).text().trim().toLowerCase(); 
    $(this).addClass('default ' + className); 
}); 

J'ajoute dynamiquement des classes pour étiqueter des éléments, mais lorsque j'essaie de les styler, il n'y a aucun effet. L'un d'eux a .sedan classe ajouté automatiquement, je le vois dans Firebug, mais ce qui suit n'a pas d'effet:CSS n'a aucun effet sur les classes dynamiques

.sedan { 
    display:none !important; 
} 

HTML:

<fieldset class="one"> 
    <label>sedan</label> 
    <label>suv</label> 
    <label>truck</label> 
</fieldset> 

<fieldset class="two"> 
    <label>sedan</label> 
    <label>suv</label> 
    <label>truck</label> 
</fieldset> 
+1

S'il vous plaît inclure le code HTML étant ciblé. – Sampson

+0

Juste fait, merci. – 3zzy

+0

Ce n'est pas '

'. Que diriez-vous de montrer le HTML actuel? –

Répondre

1

Utilisez la méthode de trim jQuery:

var className = $.trim($(this).text()).toLowerCase(); 
+0

Je ne sais pas pourquoi cela a été refusé, le code original fourni ne fonctionnera que dans les versions récentes de Firefox qui implémentent la méthode Javascript 1.8.1 'String.trim()'. –

+0

Ah, ce qui a été downvoted (par quelqu'un) est en fait la solution! :) – 3zzy

+0

Nimbuz, votre code a fonctionné tel quel sans cela. – Sampson

0

Il n'y a rien de mal avec le code » J'ai posté ici. Je viens de le tester localement et ça marche très bien. Assurez-vous que vos sélecteurs sont corrects - et vous pouvez vérifier si les styles sont ajoutés avec firebug.

+1

Il y a un espace après "default", et jQuery se sépare en espaces. Le code OP devrait ajouter deux classes différentes à chaque élément. – outis

+0

Le code OP * does * ajoute deux classes (compte tenu de ce qui a été posté ici). – Sampson