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>
8 Réponses :
$('.member-info').slice(1).hide();
+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 code> 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)
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)')
Merci @ jon- celui-ci m'a aidé un bon bit. Je ne sais pas pourquoi les autres n'étaient pas.
Utilisez le : non () sélecteur . Par exemple: Si d'abord est vraiment toujours le premier enfant, essayez p>
Que diriez-vous de $ (". membre-info '). Pas ('. Premier '). Masquer (); Code> P> P>
Je suis allé sur cette question aussi. Cependant, je n'ai pas commodément une classe nommée premier code> 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:
$(".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
à cause du chemin des sélecteurs jQuery sont évalués droite à gauche em>, le Un rapide et Solution facile à lire consiste à utiliser la version de fonction par exemple p> ou p> JSPERF des sélecteurs associés: strong> @AuthorProxy code>,
@david thomas code> et em>
@maximilian ehlers code> Tout suggez
$ ('. membre-info '). Not ('. Premier '). Cacher (); code> dans leurs réponses qui est une solution très rapide et très lisible.
"". membre-info: non (.First) " code> est effectivement ralenti par cette évaluation. P>
.not (". Premier") code> ou même juste
.not (": premier") p> p>
.not (': premier') code> est que peu de points de pourcentage plus lentement que
SLICE (1 ) code>, mais est très lisible comme "je veux tout sauf le premier". P> p>
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)' code> et
': non (.first)' code> et même
': non (premier)' code> !