Я хочу выделить все элементы, которые имеют два класса a
и b
.
<element class="a b">
Итак, только те элементы, которые имеют оба класса.
Когда я использую $(".a, .b")
, он дает мне объединение, но я хочу пересечение.
Я хочу выделить все элементы, которые имеют два класса a
и b
.
<element class="a b">
Итак, только те элементы, которые имеют оба класса.
Когда я использую $(".a, .b")
, он дает мне объединение, но я хочу пересечение.
Если вы хотите сопоставлять только элементы с обоими классами (пересечение, например, логическое И), просто запишите селекторы вместе без пробелов между ними:
$('.a.b')
Порядок не имеет значения, поэтому вы также можете поменять местами:
$('.b.a')
Таким образом, чтобы сопоставить элемент div
с идентификатором a
с классами b
и c
, вы должны написать:
$('div#a.b.c')
(На практике вам, скорее всего, не нужно получать эту конкретную информацию, и обычно достаточно идентификатора или селектора класса: $('#a')
.)
Вы можете сделать это, используя функцию filter()
:
$(".a").filter(".b")
Для случая
<element class="a">
<element class="b c">
</element>
</element>
Вам нужно будет разместить пробел между .a
и .b.c
$('.a .b.c')
Проблема, с которой вы сталкиваетесь, заключается в том, что вы используете 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')
$('.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>
Просто укажите другой случай с элементом:
например. <div id="title1" class="A B C">
Просто введите: $("div#title1.A.B.C")
Ванильное JavaScript-решение: -
document.querySelectorAll('.a.b')
Для повышения производительности вы можете использовать
$('div.a.b')
Это будет выглядеть только через элементы div вместо того, чтобы проходить через все элементы html, которые у вас есть на вашей странице.
Селектор групп
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")
ваш код $(".a, .b")
будет работать для нескольких элементов одновременно (
<element class="a">
<element class="b">
если вы хотите выбрать элемент, имеющий a и b оба класса, например <element class="a b">
, чем использовать js без комы
$('.a.b')
Вам не нужен jQuery
для этого
В Vanilla
вы можете делать:
document.querySelectorAll('.a.b')
Вы можете использовать метод 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>
var elem = document.querySelector(". a.b");