Abaixo, como devo selecionar os elementos que contêm a classe my_class
dentro do elemento com id = "my_id"
?
Observe que o elemento também pode ter outra classe, para a qual não estou selecionando.
<div id = "my_id">
<span class = "my_class hidden">hi</span>
<span class = "my_class">hello</span>
</div>
estava tentando
$("#my_id [class*=my_class ]")
$("#my_id .my_class:first")
Basta usar o seletor de classe comum.
Não importa se o elemento também possui outras classes. Ele tem a classe .my_class e está em algum lugar dentro de #my_id , então ele vai corresponder a esse seletor.
Em relação ao desempenho
De acordo com a documentação de desempenho do seletor jQuery , é mais rápido usar os dois seletores separadamente, como este:
Aqui está a parte relevante da documentação:
Selecionar por ID ou apenas por classe (entre outras coisas) invoca funções fornecidas pelo navegador, como as
document.getElementById()
quais são bastante rápidas, enquanto usar um seletor descendente invoca o motor Sizzle conforme mencionado que, embora rápido, é mais lento do que a alternativa sugerida.fonte
Sempre use
ao invés de
Dê uma olhada em Regras de desempenho JQuery .
Também no Jquery Doc
fonte
Eu acho que você está pedindo para selecionar apenas
<span class = "my_class">hello</span>
este elemento, Você tem que fazer assim, Se eu entendi sua pergunta corretamente, esta é a resposta,DEMO
fonte
$("#my_id .my_class")
é o equivalente mais curto; você não ganha nada usando o seletor de atributo neste caso.Também
$( "#container" ).find( "div.robotarm" );
é igual a:
$( "div.robotarm", "#container" )
fonte