Comment sélectionner le premier élément <p>
dans le <div>
suivant avec jQuery?
<div>
<h1>heading</h1>
<p>How do I select this element with jQuery?</p>
<p>Another paragraph</p>
</div>
En supposant que vous ayez déjà une référence à la div
:
$(yourDiv).find("p").eq(0);
Si la première p
sera toujours un enfant direct de la div
, vous pouvez utiliser children
au lieu de find
.
Certaines alternatives incluent:
$(yourDiv).find("p:eq(0)"); //Slower than the `.eq` method
$(yourDiv).find("p:first");
$(yourDiv).find("p").first() //Just an alias for `.eq(0)`
Notez que la méthode eq
sera toujours le moyen le plus rapide de le faire. Voici les résultats d'une comparaison quick de la méthode eq
, du sélecteur :eq
et du sélecteur :first
(je ne me suis pas soucié de la méthode first
puisqu'il s'agit simplement d'un alias de eq(0)
):
$('div p:first')
la réponse était trop courte pour être publiée sans cette phrase inutile.
Edit C’est définitivement une option lente. Après avoir examiné le test de vitesse de Jame, il semble que les sélecteurs jQuery fonctionnent mieux quand ils se superposent aux sélecteurs css.
$ ("div p"). first ();
ou $ ('div p: premier');
Référence: http://api.jquery.com/first/
N'oubliez pas que first () ne correspond qu'à un seul élément, le sélecteur: first-child peut en rechercher plus d'un: un pour chaque parent.
Vous connaissez presque la réponse (d'après le titre de votre message). Il existe un sélecteur dans jQuery appelé :first-of-type
. Utilisez-le pour rechercher et ajouter automatiquement une classe à la première balise p, comme ceci:
$("div p:first-of-type").addClass('someClass');
$('div p').first()
Devrait marcher. Je pense.