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 相关文章推荐
greybox——不开新窗口看新的网页
Feb 20 Javascript
插件:检测javascript的内存泄漏
Mar 04 Javascript
初窥JQuery(二) 事件机制(1)
Nov 25 Javascript
CSS+jQuery实现的一个放大缩小动画效果
Sep 24 Javascript
浅谈JavaScript function函数种类
Dec 29 Javascript
JS扩展类,克隆对象与混合类实例分析
Nov 26 Javascript
Bootstrap模态窗口源码解析
Feb 08 Javascript
Vue 2.0 服务端渲染入门介绍
Mar 29 Javascript
Node 自动化部署的方法
Oct 17 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 jQuery
vue-cli3跨域配置的简单方法
Sep 06 Javascript
微信小程序实现聊天室功能
Jun 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中global和$GLOBALS[]的分析之一
2012/02/02 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
Vue组件通信的几种实现方法
2019/04/25 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
Python中使用PDB库调试程序
2015/04/05 Python
python用户管理系统的实例讲解
2017/12/23 Python
如何用Python来搭建一个简单的推荐系统
2019/08/07 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
企业安全生产责任书范本
2014/07/28 职场文书
单位委托函范文
2015/01/29 职场文书
会计人员岗位职责
2015/02/03 职场文书
中班教师个人总结
2015/02/05 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS