Ci-dessous, comment dois-je sélectionner les éléments qui contiennent la classe my_class
dans l'élément avecid = "my_id"
?
Notez que l'élément peut également avoir une autre classe, pour laquelle je ne sélectionne pas.
<div id = "my_id">
<span class = "my_class hidden">hi</span>
<span class = "my_class">hello</span>
</div>
essayait
$("#my_id [class*=my_class ]")
$("#my_id .my_class:first")
Utilisez simplement le sélecteur de classe classique.
Peu importe si l'élément a également d'autres classes. Il a la classe .my_class , et il est quelque part dans #my_id , donc il correspondra à ce sélecteur.
Concernant les performances
Selon la documentation sur les performances du sélecteur jQuery , il est plus rapide d'utiliser les deux sélecteurs séparément, comme ceci:
Voici la partie pertinente de la documentation:
La sélection par ID ou par classe seule (entre autres) appelle des fonctions fournies par le navigateur comme celles
document.getElementById()
qui sont assez rapides, tandis que l'utilisation d'un sélecteur descendant appelle le moteur Sizzle comme mentionné qui, bien que rapide, est plus lent que l'alternative suggérée.la source
Toujours utiliser
au lieu de
Jetez un œil aux règles de performance JQuery .
Aussi chez Jquery Doc
la source
Je pense que vous demandez de ne sélectionner que
<span class = "my_class">hello</span>
cet élément, vous avez fait comme ça, si je comprends bien votre question, c'est la réponse,DEMO
la source
$("#my_id .my_class")
est l'équivalent le plus court; vous ne gagnez rien à utiliser le sélecteur d'attribut dans ce cas.Est également
$( "#container" ).find( "div.robotarm" );
égal à:
$( "div.robotarm", "#container" )
la source