9
votes

Sélecteur JQuery - Tout sauf le premier

J'ai une petite question de sélecteurs jQuery, j'ai le suivant HTML:

<div class="member-info first"></div>
<div class="member-info"></div>
<div class="member-info"></div>


2 commentaires

Dupliqué possible de jQuery Sélectionner tout sauf Premier


Dupliquer de tous-éléments-mais-the-premier ou Tous-éléments-pas-in-a-class . De toute façon, cette question est particulièrement confuse de nommer la classe du premier élément "d'abord". Les réponses incluent donc ': non (: premier)' et ': non (.first)' et même ': non (premier)' !


8 Réponses :


16
votes
$('.member-info').slice(1).hide();

3 commentaires

+1 Slice () va devenir beaucoup plus rapide car il suffit de retirer un élément d'un tableau plutôt que d'avoir JQuery vérifier la classe sur chaque élément.


@Keltex: Je suis d'accord. Tant que la classe première est toujours sur le premier match de l'ensemble, faire une tranche sera la voie à suivre.


@Keltex True, mais plus le plus clair devrait être choisi, car la sélection de classe n'est pas susceptible de faire un impact notable. (Comme toujours lorsqu'il est lié à la performance, au profil avant et après)



2
votes

Cela ne répond pas vraiment à votre question, mais vous pouvez ignorer le premier élément correspondant à l'aide de GT.

Par exemple: P>

$('div.member-info:gt(0)')


1 commentaires

Merci @ jon- celui-ci m'a aidé un bon bit. Je ne sais pas pourquoi les autres n'étaient pas.



0
votes

Cela devrait fonctionner: xxx

à l'aide de non () < / code> .


0 commentaires

3
votes

Utilisez le : non () sélecteur . Par exemple: xxx

Si d'abord est vraiment toujours le premier enfant, essayez xxx


0 commentaires

0
votes

Que diriez-vous de $ (". membre-info '). Pas ('. Premier '). Masquer ();


0 commentaires

1
votes

Je suis allé sur cette question aussi. Cependant, je n'ai pas commodément une classe nommée premier marquant mon élément pour l'exclusion. Voici la solution que j'ai utilisée pour le sélecteur dans le contexte de cet exemple: xxx


0 commentaires

3
votes
$(".member-info:not('.first')").hide();
$(".member-info").filter(":not('.first')").hide();
$('.member-info').not('.first').hide();

$(".member-info:not(:first)").hide();
$(".member-info").filter(":not(':first')").hide();
$('.member-info').not(':first').hide();

$(".member-info:not(:eq(0))").hide();
$(".member-info").filter(":not(':eq(0)')").hide();
$(".member-info").not(":eq(0)").hide();

$(".member-info:not(:lt(1))").hide();
$(".member-info").filter(":not(':lt(1)')").hide();
$(".member-info").not(":lt(1)").hide();

$(".member-info:gt(0)").hide();
$(".member-info").filter(':gt(0)').hide();

$(".member-info").slice(1).hide();
All possible ways that come to my mind.
I also made JavaScript performance comparison where you can find some unexpectable results.All of this samples work with v1.10.* of jQuery.Most times this one is the fastest $(".member-info").slice(1).hide(); and looks like relevant, not brainstormed answer

0 commentaires

0
votes

@AuthorProxy , @david thomas et @maximilian ehlers Tout suggez $ ('. membre-info '). Not ('. Premier '). Cacher (); dans leurs réponses qui est une solution très rapide et très lisible.

à cause du chemin des sélecteurs jQuery sont évalués droite à gauche , le "". membre-info: non (.First) " est effectivement ralenti par cette évaluation.

Un rapide et Solution facile à lire consiste à utiliser la version de fonction .not (". Premier") ou même juste .not (": premier")

par exemple xxx

ou xxx

JSPERF des sélecteurs associés: http://jsperf.com/fastest-way-way-way- Sélectionner- TOUT-Attendez-l'attendre-le-premier-un / 6

.not (': premier') est que peu de points de pourcentage plus lentement que SLICE (1 ) , mais est très lisible comme "je veux tout sauf le premier".


0 commentaires