我要选择所有具有两个类的元素a
和b
。
<element class="a b">
因此,只有具有两个类的元素。
当我使用$(".a, .b")
它时,会给我工会,但是我想要交集。
我要选择所有具有两个类的元素a
和b
。
<element class="a b">
因此,只有具有两个类的元素。
当我使用$(".a, .b")
它时,会给我工会,但是我想要交集。
Answers:
如果只想匹配两个类的元素(一个交集,如逻辑AND),则只需将选择器写在一起,而在它们之间不能有空格:
$('.a.b')
顺序无关紧要,因此您也可以交换类:
$('.b.a')
因此,要匹配div
ID为的a
带有类b
和的元素c
,您应编写:
$('div#a.b.c')
(在实践中,您很可能不需要具体说明,通常一个ID或类选择器本身就足够了:)$('#a')
。
b
和c
是动态添加的,则可能会很有用,并且仅当元素具有这些类时才要选择该元素。
.a .b
搜索具有class的元素,b
这些元素是具有class 的元素的后代a
。因此,类似这样的操作div a
只会返回a
元素内部的div
元素。
您可以使用以下filter()
功能执行此操作:
$(".a").filter(".b")
.a
,并且需要基于也属于原始.a
集合的不同任意类进行多次过滤,则这样做的效率也更高。
对于这种情况
<element class="a">
<element class="b c">
</element>
</element>
您需要在.a
和之间放置一个空格.b.c
$('.a .b.c')
$('.a .c.b')
也可以工作吗?
$('.a > element')
您遇到的问题是您正在使用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')
为了获得更好的性能,您可以使用
$('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")
var elem = document.querySelector(“。ab”);