Я хочу выделить все элементы, которые имеют два класса 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");