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 相关文章推荐
新浪中用来显示flash的函数
Apr 02 Javascript
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
May 06 Javascript
Jquery Change与bind事件代码
Sep 29 Javascript
JS trim去空格的最佳实践
Oct 30 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
Jan 11 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
Jul 28 Javascript
JavaScript仿百度图片浏览效果
Nov 23 Javascript
Vue精简版风格概述
Jan 30 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
Aug 24 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
Mar 05 Javascript
微信小程序实现锚点跳转
Nov 23 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设计模式 php实现策略模式(strategy)
2015/12/07 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
js更优雅的兼容
2010/08/12 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
Python、Javascript中的闭包比较
2015/02/04 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
python 同时运行多个程序的实例
2019/01/07 Python
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
类的返射机制中的包及核心类
2016/09/12 面试题
大学生文员专业个人求职信范文
2014/01/05 职场文书
上班早退检讨书
2014/01/09 职场文书
网络教育自我鉴定
2014/02/04 职场文书
高中军训感言800字
2014/03/05 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
文明演讲稿范文
2014/05/12 职场文书
淘宝店策划方案
2014/06/07 职场文书
师德师风整改措施
2014/10/24 职场文书
党小组推荐意见
2015/06/02 职场文书