Как я могу выбрать элемент с несколькими классами в jQuery?

Я хочу выделить все элементы, которые имеют два класса a и b.

<element class="a b">

Итак, только те элементы, которые имеют оба класса.

Когда я использую $(".a, .b"), он дает мне объединение, но я хочу пересечение.

1776
25 июня '09 в 1:28
источник поделиться
11 ответов

Если вы хотите пересечение, просто напишите селекторам вместе без пробелов между ними.

$('.a.b')

Итак, для элемента с идентификатором a с классами b и c вы должны написать:

$('#a.b.c')
2296
25 июня '09 в 1:30
источник

Вы можете сделать это, используя функцию filter():

$(".a").filter(".b")
147
25 июня '09 в 1:34
источник

Для случая

<element class="a">
  <element class="b c">
  </element>
</element>

Вам нужно будет разместить пробел между .a и .b.c

$('.a .b.c')
98
25 марта '13 в 23:31
источник

Проблема, с которой вы сталкиваетесь, заключается в том, что вы используете Group Selector, тогда как вы должны использовать Multiples selector! Чтобы быть более конкретным, вы используете $('.a, .b'), тогда как вы должны использовать $('.a.b').

Для получения дополнительной информации см. обзор различных способов объединения селекторов ниже!


Селектор групп: ","

Выберите все элементы <h1> И все элементы <p> И все элементы <a>:

$('h1, p, a')

Селектор мультипликации: "" (без символа)

Выберите все <input> элементы type text, с классами code и red:

$('input[type="text"].code.red')

Селектор потомков: "" (пробел)

Выберите все элементы <i> внутри элементов <p>:

$('p i')

Селектор для детей: " > "

Выберите все <ul> элементы, которые являются непосредственными дочерними элементами элемента <li>:

$('li > ul')

Смежный селектор: "+"

Выберите все элементы <a>, которые помещаются сразу после элементов <h2>:

$('h2 + a')

Общий селектор: "~"

Выберите все элементы <span>, которые являются братьями и сестрами элементов <div>:

$('div ~ span')
46
21 янв. '16 в 1:24
источник

$('.a .b , .a .c').css('border', '2px solid yellow');
//selects b and c
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="a">a
  <div class="b">b</div>
  <div class="c">c</div>
  <div class="d">d</div>
</div>
30
19 апр. '13 в 10:19
источник

Ванильное JavaScript-решение: -

document.querySelectorAll('.a.b')

23
29 янв. '15 в 21:02
источник

Просто укажите другой случай с элементом:

например. <div id="title1" class="A B C">

Просто введите: $("div#title1.A.B.C")

22
14 дек. '12 в 19:15
источник

Для повышения производительности вы можете использовать

$('div.a.b')

Это будет выглядеть только через элементы div вместо того, чтобы проходить через все элементы html, которые у вас есть на вашей странице.

16
28 сент. '15 в 8:26
источник

Селектор групп

body {font-size: 12px; }
body {font-family: arial, helvetica, sans-serif;}
th {font-size: 12px; font-family: arial, helvetica, sans-serif;}
td {font-size: 12px; font-family: arial, helvetica, sans-serif;}

Становится следующим:

body, th, td {font-size: 12px; font-family: arial, helvetica, sans-serif;}

Итак, в вашем случае вы попробовали селектор групп, тогда как его пересечение

$(".a, .b") 

вместо этого используйте

$(".a.b") 
6
17 мая '17 в 16:57
источник

Вам не нужен jQuery для этого

В Vanilla вы можете делать:

document.querySelectorAll('.a.b')
1
04 апр. '18 в 11:00
источник

Вы можете использовать метод getElementsByClassName() для чего вы хотите.

var elems = document.getElementsByClassName("a b c");
elems[0].style.color = "green";
console.log(elems[0]);
<ul>
  <li class="a">a</li>
  <li class="a b">a, b</li>
  <li class="a b c">a, b, c</li>
</ul>

Это также самое быстрое решение. вы можете увидеть тест о том, что здесь.

0
01 авг. '18 в 13:41
источник

Посмотрите другие вопросы по меткам или Задайте вопрос