2010-11-05 11 views
1

J'ai une liste comme ceci:jQuery - Sélection de tous les NON-Matches?

<div class="commentList> 
    <div name="version-1>stuff</div> 
    <div name="version-1>stuff</div> 
    <div name="version-1>stuff</div> 
    <div name="version-2>stuff</div> 
    <div name="version-3>stuff</div> 
    <div name="version-3>stuff</div> 
</div> 

Je voudrais une ligne de jquery que, étant donné une # version, comme 3, mettra à jour the.CommentList pour afficher uniquement des années div avec name = "version 3 "Les autres seront cachés?

ID de pièce possible sans?

Répondre

5

j'utiliser un class ici depuis name n'est pas un attribut valide, vous pouvez le faire:

$(".commentList > div").hide();  //hide them all 
$(".commentlist > .version-3").show(); //show what you want 

Si vous doit nom d'utilisation, la deuxième ligne ressemblerait à ceci:

$(".commentlist > div[name='version-3']").show(); 

But..try et être valide avec une classe ici.

+1

classe, comme le suggère Nick, est la meilleure approche – graham

+0

Le problème avec l'utilisation de la classe est thatI ont d'autres objets de classe en classe = "" et je dois être capable d'obtenir la version #, en utilisant $ (this) .class, et s'il y a d'autres choses dans la classe, je ne peux pas obtenir la version #? – AnApprentice

+0

Y a-t-il d'autres attributs valides pour un DIV, autres que l'ID et la Classe I pourraient utiliser? – AnApprentice

1

$('.commentList > div[name!=version-'+num+']').hide();

mais bien sûr, il l'habitude de basculer en arrière qui peut tout divs déjà être cachés. @Nick a une bonne réponse.

2

l'utilisation du sélecteur serait-elle une mauvaise idée?

$(".commentList").children().not("div[name='version-3']").hide(); 

bien que l'idée de les cacher tout d'abord n'est pas un si mauvais dea :)