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 相关文章推荐
[推荐]javascript 面向对象技术基础教程
Mar 03 Javascript
JavaScript解析json格式数据简单示例
Dec 09 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
Aug 24 Javascript
jQuery on()方法示例及jquery on()方法的优点
Aug 27 Javascript
详解AngularJS中的http拦截
Feb 09 Javascript
基于jQuery实现仿51job城市选择功能实例代码
Mar 02 Javascript
BootStrap中Datepicker控件带中文的js文件
Aug 10 Javascript
利用Javascript实现BMI计算器
Aug 16 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
JavaScript动态绑定详解
Sep 14 Javascript
js用类封装pop弹窗组件
Oct 08 Javascript
element tree树形组件回显数据问题解决
Aug 14 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
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
分享一个asp.net pager分页控件
2012/01/04 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
详解python中的线程与线程池
2019/05/10 Python
python numpy存取文件的方式
2020/04/01 Python
夜班门卫岗位职责
2013/12/09 职场文书
工程项目经理岗位职责
2013/12/15 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
单位工作证明
2014/10/07 职场文书
英文升职感谢信
2015/01/23 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
导游词之广西漓江
2019/11/02 职场文书
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏