jQuery d'abord le sélecteur de type?
Comment puis-je sélectionner le premier <p>
élément dans la suite de <div>
avec jQuery?
<div>
<h1>heading</h1>
<p>How do I select this element with jQuery?</p>
<p>Another paragraph</p>
</div>
Vous devez vous connecter pour publier un commentaire.
En supposant que vous avez une référence à la
div
déjà:Si le premier
p
sera toujours un enfant direct de l'div
, vous pouvez utiliserchildren
au lieu defind
.Certaines solutions de rechange comprennent:
Noter que le
eq
méthode sera toujours le moyen le plus rapide pour ce faire. Voici les résultats d'une comparaison rapide de laeq
méthode,:eq
sélecteur et:first
sélecteur (je n'ai pas pris la peine avec lefirst
méthode, car c'est juste un alias deeq(0)
)::lt(1)
. Je suis presque certain qu'il sera plus lent que le.eq
méthode de trop, mais c'est encore une autre façon de réaliser la même chose.:nth-child
exemple ne correspond pas à l'un des éléments - le premier élément est unh2
, pas unp
. Je crois que, derrière les coulisses,:first
est converti à:eq(0)
, ce qui est indiqué dans mon premier test.:eq(n)
, mais l'équivalent.eq(n)
méthode est plus rapide.:nth-of-type
et la comme avec jQuery.:first-of-type
et les ne fonctionnent que dans les navigateurs qui prennent en chargequerySelectorAll
. Les navigateurs plus anciens (en particulier IE8 et ci-dessous) lèvera une erreur, et c'est probablement préférable de s'en tenir àeq
.réponse a été trop court pour poster sans cette phrase inutile.
Modifier
C'est certainement une option plus longue. Après avoir regardé Jame du test de vitesse, ça ressemble à des sélecteurs jQuery fonctionnent mieux lorsqu'elles piggy back-off de sélecteurs css.
.first
et:first
et:eq(0)
et:lt(1)
(il y a tellement de façons d'écrire la même chose avec jQuery), mais il devrait être le jeun de la grappe.:nth-child
n'est pas équivalent et ne fonctionne pas dans ce cas. Vous êtes en droit de penser que les sélecteurs fonctionnent mieux quand ils ont une CSS équivalent, en particulier dans les navigateurs modernes, parce que le natifquerySelector
etquerySelectorAll
méthodes peuvent être utilisées au lieu de Grésillement.$("div " p").first();
ou $('div p:first');
Référence: http://api.jquery.com/first/
Garder à l'esprit que la première() ne correspond qu'à un seul élément :first-sélecteur d'enfant peut correspondre à plusieurs: un pour chaque parent.
Vous près de savoir la réponse (à partir de votre titre du post). Il y a un sélecteur jQuery appelé
:first-of-type
. L'utiliser pour rechercher et ajouter une classe à la première balise p automatiquement, comme suit:Devrait fonctionner. Je pense qu'.
Cela devrait fonctionner
Le code ci-dessus trouve le premier paragraphe de la div comme @Denver relevé et a changé son
fonts-size
à10px
Voici un exemple qui explique encore plus sur jQuery, le premier du sélecteur de type de