157 votes

Comment puis-je sélectionner un élément avec une classe dans un DIV ?

J'ai le HTML suivant :

<div id="mydiv">
  <div class="myclass"></div>
</div>

Je veux pouvoir utiliser un sélecteur qui sélectionne l'intérieur div mais spécifique pour le mydiv conteneur. Comment puis-je réaliser cela avec jQuery ?

318voto

David Thomas Points 111253

Essayez :

$('#mydiv').find('.myclass');

Démonstration de JS Fiddle .

Ou :

$('.myclass','#mydiv');

Démonstration de JS Fiddle .

Ou :

$('#mydiv .myclass');

Démonstration de JS Fiddle .

Références :


Il est bon d'apprendre de la find() documentation :

Les méthodes .find() et .children() sont similaires, sauf que la méthode cette dernière ne descend que d'un seul niveau dans l'arbre DOM.

2 votes

Les deux autres ne fonctionneront pas, mais le premier est correct. Les deuxièmes sélectionneront chaque class=myclass et chaque id=mydiv) je pense.

2 votes

@czupe : non, alors que l'approche du sélecteur de contexte est écrite différemment, jQuery met en œuvre, en interne, la même approche. $('#mydiv').find('.myclass'); comme celle utilisée dans le premier extrait de code. D'ailleurs : "...sélectionner chaque id=mydiv ' ? Il ne devrait y avoir que jamais être une utilisation d'un id dans une page (une id doit être unique dans le document ).

0 votes

@DavidThomas Je viens d'essayer $('#mydiv .myclass') ; et j'ai fini par sélectionner tous les divs qui ont la classe myclass plutôt que les divs de mydiv.

22voto

ShankarSangoli Points 45345

Essayez ceci

$("#mydiv div.myclass")

0 votes

Ou si vous ne vous souciez pas de savoir si c'est une div (ou si elle sera toujours un div ) vous pouvez simplifier en $("#mydiv .myclass").

0 votes

@Michael - Oui, nous pouvons simplement dire .mycalss mais si nous savons que c'est un div, div.myclass rendra la recherche plus rapide.

0 votes

@Shankar, il est fort probable que cela ne le rendra pas plus rapide, mais plutôt plus lent. en supposant que jquery utilise sizzle et non un natif. document.queryselectorall il cherchera probablement de la même manière et dans votre cas, il effectuera une extra vérifier. Il est possible que les implémentations natives fassent de même.

13voto

Leandro Galluppi Points 420

Vous le ferez de la même manière que vous appliquerez un sélecteur css. Par exemple, vous pouvez faire

$("#mydiv > .myclass")

ou

$("#mydiv .myclass")

Le dernier correspondra à chaque myclass dans myDiv, y compris myclass dans myclass.

6voto

e11438 Points 477

Si vous voulez sélectionner tous les éléments qui ont l'attribut de classe "myclass", utilisez

$('#mydiv .myclass');

Si vous voulez sélectionner uniquement les éléments div qui ont l'attribut class "myclass" utilisez

$("div#mydiv div.myclass");

Pour en savoir plus sur les sélecteurs jquery, consultez les pages suivantes articles

1voto

user3749775 Points 1

Essayez plutôt ceci $(".video-divs.focused") . Cela fonctionne si vous cherchez des vidéos-divisions qui sont ciblées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X