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

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

<element class="a b">

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

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

+1966
источник поделиться
13 ответов

Если вы хотите сопоставлять только элементы с обоими классами (пересечение, например, логическое И), просто запишите селекторы вместе без пробелов между ними:

$('.a.b')

Порядок не имеет значения, поэтому вы также можете поменять местами:

$('.b.a')

Таким образом, чтобы сопоставить элемент div с идентификатором a с классами b и c, вы должны написать:

$('div#a.b.c')

(На практике вам, скорее всего, не нужно получать эту конкретную информацию, и обычно достаточно идентификатора или селектора класса: $('#a').)

+2520
источник

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

$(".a").filter(".b")
+167
источник

Для случая

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

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

$('.a .b.c')
+115
источник

Проблема, с которой вы сталкиваетесь, заключается в том, что вы используете 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')
+59
источник

$('.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>
+36
источник

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

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

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

+25
источник

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

document.querySelectorAll('.a.b')

+25
источник

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

$('div.a.b')

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

+18
источник

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

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") 
+8
источник

ваш код $(".a, .b") будет работать для нескольких элементов одновременно (

)
<element class="a">
<element class="b">

если вы хотите выбрать элемент, имеющий a и b оба класса, например <element class="a b">, чем использовать js без комы

$('.a.b')
+4
источник

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

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

document.querySelectorAll('.a.b')
+3
источник

Вы можете использовать метод 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>

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

+1
источник

var elem = document.querySelector(". a.b");

0
источник

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