querySelector

HTML5向Web API新引入了document.querySelector以及document.querySelectorAll两个方法用来更方便地从DOM选取元素,功能类似于jQuery的选择器。这使得在编写原生JavaScript代码时方便了许多。

两个方法使用差不多的语法,都是接收一个字符串参数,这个参数需要是合法的CSS选择语法。


element = document.querySelector('selector1,selector2,...');

elementList = document.querySelectorAll('selector1,selector2,...');


但是这两个方法无法查找带伪类状态的元素,形如:querySelector(‘:hover’)不会得到预期结果。

querySelector:该方法返回满足条件的单个元素。按照深度优先和先序遍历的原则使用参数提供的CSS选择器在DOM进行查找,返回第一个满足条件的元素。

 

var element = document.querySelector('div#container');//返回idcontainer的首个div

var element = document.querySelector('.foo,.bar');//返回带有foo或者bar样式类的首个元素



querySelectAll:该方法返回所有满足条件的元素,结果是个nodeList集合。查找规则与前面所述一样。


var elements = document.querySelectorAll('div.foo');//返回所有带foo类样式的div


我们知道反斜杠是用来转义用的,比如在字符串里我们想表示空字符就使用’\b’,换行’\n’。同样,在提供给querySelectorquerySelectorAll的参数也支持转义,了解这点非常重要。

先看个例子,比如我们有个div它的样式类为foo:bar,当然我知道你一般不会这样写。当我们需要选择它的时候,就需要将其中的冒号进行转义,否则抛错。

同时,有趣的事情来了,或许你以为将冒号直接转义就解决问题了。

正确的做法是将反斜杠转义后‘.foo\\:bar’再传递给querySelector,后者在接收到.foo\\:bar这个参数后,字符串将两个反斜杠转义成一个,然后querySelector前面得到的一个反斜杠与冒号结合进行转义得到正确结果。



Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注