ChatGPT解决这个技术问题 Extra ChatGPT

如何在 jQuery 中选择具有多个类的元素?

我想选择具有 ab 两个类的所有元素。

<element class="a b">

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

当我使用 $(".a, .b") 时,它给了我联合,但我想要交集。

如果你能定义联合和交集对我们新手意味着什么,那就太好了:)
@KolobCanyon 联合和交集是基本的集合论概念。因此,例如,一个工会将是所有讲法语的人(包括男性和女性),而一个交集将是所有讲法语的女性(排除所有不会说法语的人,并排除所有不是女性的人)。可以使用定义每个集合的任意数量的特征来进行联合和交叉。 en.wikipedia.org/wiki/Union_(set_theory) en.wikipedia.org/wiki/Intersection_(set_theory)
我认为你的意思是在“女性”和“讲法语的人”这两组中,工会将是世界上所有的女性和世界上所有说法语的人,一组包括不说话的女性法语和讲法语的男人。正如你所写,交叉点只有那些说法语的女性。

S
Sasha Chedygov

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

$('.a.b')

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

$('.b.a')

因此,要将 ID 为 adiv 元素与类 bc 匹配,您可以编写:

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

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


@Flater:这只是为了举例。但是,如果类 bc 是动态添加的,并且您只想选择具有这些类的元素,则它可能会很有用。
@Shimmy:是的。两个选择器之间的空格表示您正在搜索后代;即 .a .b 搜索具有类 b 的元素,这些元素是具有类 a 的元素的后代。所以像 div a 这样的东西只会返回 inside div 元素的 a 元素。
B
Ben Everard

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

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

这个答案和接受的答案有什么区别?
@Rice:这个会慢一点,因为它将首先构建一个具有“a”类的对象列表,然后删除除具有“b”类的对象之外的所有对象,而我的是一步完成的。但除此之外,没有区别。
K
Kenly

对于案件

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

您需要在 .a.b.c 之间放置一个空格

$('.a .b.c')

J
John Slegers

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

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

组选择器:“,”

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

$('h1, p, a')

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

选择 type text 的所有 <input> 元素,类 codered

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

后代选择器:“”(空格)

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

$('p i')

子选择器:">"

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

$('li > ul')

相邻兄弟选择器:“+”

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

$('h2 + a')

通用兄弟选择器:“~”

选择作为 <div> 元素的兄弟的所有 <span> 元素:

$('div ~ span')

b
beaver

$('.a .b , .a .c').css('border', '2px 纯黄色'); //选择 b 和 c

a
b
c
d


m
macio.Jun

只需提及另一个带有元素的案例:

例如<div id="title1" class="A B C">

只需输入:$("div#title1.A.B.C")


S
Salman von Abbas

香草 JavaScript 解决方案:-

document.querySelectorAll('.a.b')


T
Tejas Anil Shah

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

$('div.a.b')

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


R
Robert Oschler

您的代码 $(".a, .b") 将适用于以下多个元素(同时)

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

如果您想选择具有 a 和 b 类的元素,例如 <element class="a b">,而不是使用不带逗号的 js

$('.a.b')

S
Surya R Praveen

组选择器

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") 

S
Sandwell

为此,您不需要 jQuery

Vanilla 中,您可以:

document.querySelectorAll('.a.b')

G
Gauri Bhosle

下面的示例将让您了解一次选择多个嵌套类选择器和一行中的直接类选择器

//这里是选择器的解释 //.a .b .c = 选择 div a 和 b 内的嵌套子 c //.a .d = 选择 div a 内的嵌套子 d //.f =选择直接元素,即 div f,它位于 div a 和 b $('.a .b .c , .a .d, .f').css('background-color', 'grey');

a
b
c
d
e
f


b
bahman parsamanesh

您可以根据需要使用 getElementsByClassName() 方法。

var elems = document.getElementsByClassName("ab c"); elems[0].style.color = "绿色";控制台.log(elems[0]);

  • a
  • a, b
  • a, b, c
  • < /ul>

    这也是最快的解决方案。您可以看到有关该 here 的基准。


K
Karim Ali

var elem = document.querySelector(".ab");