Nat*_*eus 101 javascript element class
说我有这个:
<div class="class1 class2"></div>
Run Code Online (Sandbox Code Playgroud)
如何选择此div元素?
document.getElementsByClassName('class1')[0].getElementsByClassName('class2')[0]
Run Code Online (Sandbox Code Playgroud)
这不起作用.
我知道,在jQuery中,它是$('.class1.class2'),但我想用vanilla JavaScript选择它.
Joe*_*Joe 157
它实际上与jQuery非常相似:
document.getElementsByClassName('class1 class2')
Run Code Online (Sandbox Code Playgroud)
MDN Doc getElementsByClassName
Bit*_*lue 153
AND (两个类)
var list = document.getElementsByClassName("class1 class2");
var list = document.querySelectorAll(".class1.class2");
Run Code Online (Sandbox Code Playgroud)
或 (至少一类)
var list = document.querySelectorAll(".class1,.class2");
Run Code Online (Sandbox Code Playgroud)
XOR (一类但不是另一类)
var list = document.querySelectorAll(".class1:not(.class2),.class2:not(.class1)");
Run Code Online (Sandbox Code Playgroud)
NAND (不是两个类)
var list = document.querySelectorAll(":not(.class1),:not(.class2)");
Run Code Online (Sandbox Code Playgroud)
NOR (不是两个类别中的任何一个)
var list = document.querySelectorAll(":not(.class1):not(.class2)");
Run Code Online (Sandbox Code Playgroud)
fil*_*oxo 28
带有标准类选择器的querySelectorAll也适用于此.
document.querySelectorAll('.class1.class2');
Run Code Online (Sandbox Code Playgroud)
正如@filoxo所说,你可以使用document.querySelectorAll.
如果您知道您正在寻找的课程只有一个元素,或者您只对第一个元素感兴趣,您可以使用:
document.querySelector('.class1.class2');
Run Code Online (Sandbox Code Playgroud)
BTW,while .class1.class2表示具有两个类的元素.class1 .class2(注意空白)表示层次结构 - 和带有类的元素,class2该元素位于带有类的en元素内class1:
<div class='class1'>
<div>
<div class='class2'>
:
:
Run Code Online (Sandbox Code Playgroud)
如果要强制检索直接子项,请使用>sign(.class1 > .class2):
<div class='class1'>
<div class='class2'>
:
:
Run Code Online (Sandbox Code Playgroud)
有关选择器的完整信息:https:
//www.w3schools.com/jquery/jquery_ref_selectors.asp