Le chaînage des sélecteurs jQuery :lt et :gt
J'ai une table avec plus de 9 lignes.
Si je fais ceci : $('table tr:gt(3):lt(6)')
, vais-je recevoir 3 ou 6 éléments à la fin, et pourquoi? Sont tous les sélecteurs appliqués à la même sélection principale, ou sont-ils successivement appliquées sur les différentes sélections?
OriginalL'auteur glmxndr | 2009-07-16
Vous devez vous connecter pour publier un commentaire.
Ils sont appliqués de manière séquentielle, de sorte que vous aurez d'abord le filtre de loin la première des quatre éléments (
:gt(3)
), alors vous aurez filtre tous les éléments à partir de la sixième (:lt(6)
) élément de l'ensemble filtré.Imaginer ce HTML:
Puis effectuez les opérations suivantes jQuery:
Vous aurez maintenant:
:lt(n)
et:lt(n)
les sélecteurs sont 0 indexés et non inclusive.Dûment noté, merci.
merci monsieur très utile!
OriginalL'auteur Blixt
Je vous suggère d'utiliser la méthode slice() à la place.
http://docs.jquery.com/Traversing/slice#startend
Je ne peux pas penser à une raison pourquoi vous feriez de la chaîne de lt et gt de cette façon, donc peut-être subtenante trouverez ce utile.
Yep, c'est vraiment utile, bien qu'il ne fait que répondre partiellement à la question. +1 bien 🙂
+1 pour la praticité de la réponse =)
href="http://jsperf.com/lt-vs-slice" >jsperf.com/lt-vs-slice j'ai couru ce en Chrome et IE10, les deux fois tranche a été plus rapide.
OriginalL'auteur ScottE
Pas tout à fait ce que l'on pourrait penser-
Travail De Démonstration
Fondamentalement, le deuxième filtre est appliqué séquentiellement, pour l'ensemble du premier filtre.
Par exemple, sur une table avec 10 lignes,
:gt(3)
filtre à éléments 5 - 10, puis:lt(6)
sera appliqué pour les 6 éléments, pas de filtrage de tout.si vous ajoutez /modifier à la démo de l'URL, vous pouvez jouer avec le sélecteur et de voir par vous-même. Si vous modifiez le deuxième filtre à
:lt(2)
, vous obtenez des lignes 5 et 6 mis en évidence en rougeOriginalL'auteur Russ Cam
Pour quelque raison
:lt(6)
seront ignorés dans cette sélection, de sorte qu'il sera de retour tout de plus de 3 dans ce intsance.Toutefois, si vous passez là-dessus, il fonctionnera comme prévu
sera de retour 2 lignes (seule la ligne 4 et 5 entre 6 et 3).
**edit:**l'utilisation v. 1.3.2
Et aussi,
lt(6)
n'est pas ignoré, et pas seulement de travail que j'attendais. Donc:gt(3):lt(6)
sera en effet de retour de 6 éléments (si vous en avez assez de lignes, qui est)Pas vrai,
:lt(6)
sera appliqué, vous venez de ne pas le voir parce que:gt(3)
retourné plus de 6 éléments. Cependant, il va fonctionner comme vous l'avez dit si vous passez autour de.aha! donc, il filtre tout supérieur à 3, et un nouveau filtre sur ce n'est jamais reçu de...de nice.
OriginalL'auteur peirix