Quiero seleccionar todos los elementos que tienen las dos clases a
y b
.
<element class="a b">
Entonces, solo los elementos que tienen ambas clases.
Cuando lo uso $(".a, .b")
me da la unión, pero quiero la intersección.
jquery
jquery-selectors
Mladen
fuente
fuente
Respuestas:
Si desea hacer coincidir solo elementos con ambas clases (una intersección, como un AND lógico), simplemente escriba los selectores juntos sin espacios entre ellos:
El orden no es relevante, por lo que también puede intercambiar las clases:
Entonces, para hacer coincidir un
div
elemento que tiene un IDa
con clasesb
yc
, escribiría:(En la práctica, lo más probable es que no necesite ser tan específico, y un ID o un selector de clase por sí solo suele ser suficiente:.
$('#a')
)fuente
b
yc
se agregan dinámicamente, y solo desea seleccionar el elemento si tiene esas clases..a .b
busca elementos con claseb
que son descendientes de un elemento con clasea
. Entonces, algo asídiv a
solo devolveráa
elementos que están dentro de undiv
elemento.Puedes hacer esto usando la
filter()
función:fuente
.a
's' y necesita filtrar varias veces diferentes clases arbitrarias basadas que también pertenecen al.a
conjunto original .Para el caso
Tendría que poner un espacio entre
.a
y.b.c
fuente
$('.a .c.b')
funcionaría también el selector ?$('.a > element')
El problema que tienes es que estás usando a
Group Selector
, ¡mientras que deberías estar usando aMultiples selector
! Para ser más específico, está usando$('.a, .b')
mientras que debería estar usando$('.a.b')
.Para obtener más información, consulte la descripción general de las diferentes formas de combinar selectores a continuación.
Selector de grupo: ","
Seleccione todos los
<h1>
elementos Y todos los<p>
elementos Y todos los<a>
elementos:Selector de múltiplos: "" (sin caracteres)
Seleccione todos los
<input>
elementos detype
text
, con clasescode
yred
:Selector descendiente: "" (espacio)
Seleccione todos los
<i>
elementos dentro de los<p>
elementos:Selector de niños: ">"
Seleccione todos los
<ul>
elementos que son hijos inmediatos de un<li>
elemento:Selector de hermanos adyacentes: "+"
Seleccione todos los
<a>
elementos que se colocan inmediatamente después de los<h2>
elementos:Selector general de hermanos: "~"
Seleccione todos los
<span>
elementos que son hermanos de<div>
elementos:fuente
fuente
Solo mencione otro caso con element:
P.ej
<div id="title1" class="A B C">
Sólo tipo:
$("div#title1.A.B.C")
fuente
Solución JavaScript de vainilla: -
document.querySelectorAll('.a.b')
fuente
Para un mejor rendimiento puedes usar
Esto solo se verá a través de los elementos div en lugar de recorrer todos los elementos html que tiene en su página.
fuente
Selector de grupo
Se convierte en esto:
Entonces, en su caso, ha probado el selector de grupo mientras que es una intersección
en su lugar usa esto
fuente
No necesitas
jQuery
para estoEn
Vanilla
puedes hacer:fuente
su código
$(".a, .b")
funcionará para varios elementos debajo (al mismo tiempo)si desea seleccionar un elemento que tenga ambas clases de a y b, en lugar
<element class="a b">
de usar js sin comafuente
Puedes usar el
getElementsByClassName()
método para lo que quieras.Esta es la solución más rápida también. Puedes ver un punto de referencia sobre eso aquí .
fuente
var elem = document.querySelector (". ab");
fuente