javascript高级选择器querySelector和querySelectorAll全面解析


Posted in Javascript onApril 07, 2016

querySelector 和 querySelectorAll 方法是 W3C Selectors API 规范中定义的。他们的作用是根据 CSS 选择器规范,便捷定位文档中指定元素。

目前几乎主流浏览器均支持了他们。包括 IE8(含) 以上版本、 Firefox、 Chrome、Safari、Opera。

querySelector 和 querySelectorAll 在规范中定义了如下接口:

module dom { [Supplemental, NoInterfaceObject] interface NodeSelector { Element querySelector(in DOMString selectors); NodeList querySelectorAll(in DOMString selectors); }; Document implements NodeSelector; DocumentFragment implements NodeSelector; Element implements NodeSelector; };

从接口定义可以看到Document、DocumentFragment、Element都实现了NodeSelector接口。即这三种类型的元素都拥有者两个方法。querySelector和querySelectorAll的参数须是符合 css selector 的字符串。不同的是querySelector返回的是一个对象,querySelectorAll返回的一个集合(NodeList)。

获取页面I属性D为test的元素:

1 document.getElementById("test");
2 document.querySelector("#test");
3 document.querySelectorAll("#test")[0];

获取页面class属性为”red”的元素:

document.getElementsByClassName('red')
document.querySelector('.red')
document.querySelectorAll('.red')

ps:

 但需要注意的是返回的nodeList集合中的元素是非实时(no-live)的,想要区别什么是实时非实时的返回结果,请看下例:

<div id="container">
   <div></div>
   <div></div>
 </div>
//首先选取页面中id为container的元素
container=document.getElementById('#container');
console.log(container.childNodes.length)//结果为2
//然后通过代码为其添加一个子元素
container.appendChild(document.createElement('div'));
//这个元素不但添加到页面了,这里的变量container也自动更新了
console.log(container.childNodes.length)//结果为3

通过上面的例子就很好地理解了什么是会实时更新的元素。document.getElementById返回的便是实时结果,上面对其添加一个子元素后,再次获取所有子元素个数,已经由原来的2个更新为3个(这里不考虑有些浏览器比如Chrome会把空白也解析为一个子节点)。

Element.querySelector和Element.querySelectorAll和jQuery(element).find(selector)选择器的区别:

 

<SPAN style="FONT-SIZE: 15px"><divid="test1"><ahref="https://3water.com/">三水点靠木</a></div> 
<pid="bar">111</p> 
<script> 
var d1 = document.getElementById('test1'), 
obj1 = d1.querySelector('div a'), 
obj2 = d1.querySelectorAll('div a'); 
obj3 = $(d1).find('div a'); 
console.log(obj1)//<a href="https://3water.com/">三水点靠木</a> 
console.log(obj2.length)//1 
console.log(obj3)//null 
</script> 
</SPAN>

 querySelectorAll 在文档内找全部符合选择器描述的节点包括Element本身

jQuery(element).find(selector) 在文档内找全部符合选择器描述的节点不包括Element本身

以上这篇javascript高级选择器querySelector和querySelectorAll全面解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jQuery制作迷你背词汇工具
Jul 27 Javascript
js判断样式className同时增加class或删除class
Jan 30 Javascript
Extjs单独定义各组件的实例代码
Jun 25 Javascript
在父页面得到zTree已选中的节点的方法
Feb 12 Javascript
jQuery获取cookie值及删除cookie用法实例
Apr 15 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
Jun 30 Javascript
JavaScript利用Date实现简单的倒计时实例
Jan 12 Javascript
Bootstrap Table使用整理(二)
Jun 09 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
Sep 10 Javascript
Web技术实现移动监测的介绍
Sep 18 Javascript
基于layui实现高级搜索(筛选)功能
Jul 26 Javascript
Javascript原型链及instanceof原理详解
May 25 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 #Javascript
纯js实现瀑布流布局及ajax动态新增数据
Apr 07 #Javascript
原生JavaScript实现Ajax的方法
Apr 07 #Javascript
JavaScript数据推送Comet技术详解
Apr 07 #Javascript
js实现商品抛物线加入购物车特效
Nov 18 #Javascript
js类式继承与原型式继承详解
Apr 07 #Javascript
javascript原型继承工作原理和实例详解
Apr 07 #Javascript
You might like
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
php 面向对象的一个例子
2011/04/12 PHP
php验证手机号码
2015/11/11 PHP
[原创]图片分页查看
2006/08/28 Javascript
js传值 判断
2006/10/26 Javascript
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
python的concat等多种用法详解
2018/11/28 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
资深地理教师自我评价
2013/09/21 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
求职教师自荐书
2014/06/19 职场文书
培训班开班主持词
2015/07/02 职场文书
运动会班级前导词
2015/07/20 职场文书
教导处教学工作总结
2015/08/12 职场文书
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python