我想选择具有两个类a和b的所有元素。

<element class="a b">

因此,只有同时具有这两个类的元素。

当我使用$(“.a,.b”)时,它给了我并集,但我想要交集。


当前回答

您遇到的问题是,您使用的是Group Selector,而您应该使用Multiples选择器!更具体地说,您使用的是$('.a,.b'),而应该使用$('.a.b')。

有关更多信息,请参阅下面组合选择器的不同方法概述!


组选择器:“,”

选择所有<h1>元素和所有<p>元素以及所有<a>元素:

$('h1, p, a')

倍数选择器:“”(无字符)

选择文本类型的所有<input>元素,类代码和红色:

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

下降选择器:“”(空格)

选择<p>元素中的所有<i>元素:

$('p i')

子选择器:“>”

选择作为<li>元素的直接子元素的所有<ul>元素:

$('li > ul')

相邻同级选择器:“+”

选择紧挨在<h2>元素之后的所有<a>元素:

$('h2 + a')

通用同级选择器:“~”

选择所有<div>元素的同级<span>元素:

$('div ~ span')

其他回答

为了获得更好的性能,您可以使用

$('div.a.b')

这将只查看div元素,而不是单步查看页面上的所有html元素。

这不需要jQuery

在Vanilla,您可以做到:

document.querySelectorAll('.a.b')

如果您希望只匹配两个类的元素(交集,如逻辑AND),只需将选择器写在一起,其间不留空格:

$('.a.b')

顺序不相关,因此您也可以交换类:

$('.b.a')

因此,要将ID为a的div元素与类b和c相匹配,您可以编写:

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

(在实践中,您很可能不需要获得特定的ID,而ID或类选择器本身通常就足够了:$(“#a”)。)

您遇到的问题是,您使用的是Group Selector,而您应该使用Multiples选择器!更具体地说,您使用的是$('.a,.b'),而应该使用$('.a.b')。

有关更多信息,请参阅下面组合选择器的不同方法概述!


组选择器:“,”

选择所有<h1>元素和所有<p>元素以及所有<a>元素:

$('h1, p, a')

倍数选择器:“”(无字符)

选择文本类型的所有<input>元素,类代码和红色:

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

下降选择器:“”(空格)

选择<p>元素中的所有<i>元素:

$('p i')

子选择器:“>”

选择作为<li>元素的直接子元素的所有<ul>元素:

$('li > ul')

相邻同级选择器:“+”

选择紧挨在<h2>元素之后的所有<a>元素:

$('h2 + a')

通用同级选择器:“~”

选择所有<div>元素的同级<span>元素:

$('div ~ span')

可以使用filter()函数执行此操作:

$(".a").filter(".b")