Eu quero selecionar todos os elementos que têm as duas classes a
e b
.
<element class="a b">
Portanto, apenas os elementos que possuem ambas as classes.
Quando uso $(".a, .b")
, me dá a união, mas quero o cruzamento.
jquery
jquery-selectors
Mladen
fonte
fonte
Respostas:
Se você deseja combinar apenas elementos com ambas as classes (uma interseção, como um AND lógico), basta escrever os seletores juntos sem espaços no meio:
A ordem não é relevante, portanto você também pode trocar as classes:
Então, para combinar um
div
elemento que possui um IDa
com as classesb
ec
, você deve escrever:(Na prática, é provável que você não precise obter esse específico, e um seletor de ID ou classe por si só costuma ser suficiente:.
$('#a')
)fonte
b
ec
são adicionados dinamicamente, e você só quer selecionar o elemento se ele tem essas classes..a .b
procura por elementos com classeb
descendentes de um elemento com classea
. Então, algo comodiv a
retornará apenasa
elementos que estão dentro de umdiv
elemento.Você pode fazer isso usando a
filter()
função:fonte
.a
e precisa filtrar várias vezes com base em diferentes classes arbitrárias que também pertencem ao.a
conjunto original .Para o caso
Você precisaria colocar um espaço entre
.a
e.b.c
fonte
$('.a .c.b')
também funcionaria?$('.a > element')
O problema que você está tendo é que você está usando a
Group Selector
, enquanto que você deve usar aMultiples selector
! Para ser mais específico, você está usando$('.a, .b')
enquanto deveria estar$('.a.b')
.Para obter mais informações, consulte a visão geral das diferentes maneiras de combinar os seletores abaixo!
Seletor de grupo: ","
Selecione todos os
<h1>
elementos E todos os<p>
elementos E todos os<a>
elementos:Seletor de múltiplos: "" (nenhum caractere)
Selecione todos os
<input>
elementos detype
text
, com classescode
ered
:Seletor descendente: "" (espaço)
Selecione todos os
<i>
elementos dentro dos<p>
elementos:Seletor filho: ">"
Selecione todos os
<ul>
elementos que são filhos imediatos de um<li>
elemento:Seletor de irmão adjacente: "+"
Selecione todos os
<a>
elementos que são colocados imediatamente após os<h2>
elementos:Seletor geral de irmãos: "~"
Selecione todos os
<span>
elementos que são irmãos de<div>
elementos:fonte
fonte
Apenas mencione outro caso com o elemento:
Por exemplo
<div id="title1" class="A B C">
Basta digitar:
$("div#title1.A.B.C")
fonte
Solução JavaScript Vanilla: -
document.querySelectorAll('.a.b')
fonte
Para um melhor desempenho, você pode usar
Isso será exibido apenas através dos elementos div, em vez de percorrer todos os elementos html que você possui na sua página.
fonte
Seletor de grupo
Torna-se isso:
Então, no seu caso, você tentou o seletor de grupo, enquanto é uma interseção
em vez disso, use isso
fonte
Você não precisa
jQuery
dissoEm
Vanilla
você pode fazer:fonte
seu código
$(".a, .b")
funcionará abaixo de vários elementos (ao mesmo tempo)se você deseja selecionar o elemento que tem a e b da classe como
<element class="a b">
usar js sem comafonte
Você pode usar o
getElementsByClassName()
método para o que deseja.Esta é a solução mais rápida também. você pode ver uma referência sobre isso aqui .
fonte
var elem = document.querySelector (". ab");
fonte