Javascript高级编程学习笔记(46)—— 选择符API
选择符API
在DOM1中DOM只提供了 getElementById、getElementsByTagName 两种获取文档元素的方法
很多时候这两种方法往往不能较为方便地获取我们所需要的元素
所以在后续的ECMA标准中添加了另外一些获取文档中元素的方法
其中较为常用的应该就是选择符API了
什么是选择符API呢?
就是通过选择符来进行元素的选择,在这种元素选择方式成为公有标准之前,我们只能使用一些JS库来完成通过CSS选择符来获取我们所要获取的元素这一工作,比如Jquery
虽然这些JS的开发人员尽力地在优化这一工作的性能,但是效果依然不尽人意。
因为再怎么优化都是通过运行JS来实现CSS解析器的功能,所以W3C提出了 Selector API 这一标准,也就是将这一功能作为原生API实现,大幅提高了文档查询的性能
选择符API由两个核心方法组成
1.querySelector() 该方法返回与选择符匹配的第一个元素,若没有匹配元素则返回 null
2.query Selector All() 该方法返回一个NodeList实例(即相当于Nodelist的一个快照,避免了动态查询的性能问题),其中存放与选择符匹配的元素
以上方法都是再指定的范围中进行查找
所以可以进行链式调用,以此来筛选当前结果
比如 document.querySelectorAll(".div")[0].querySelectorAll("#div");
其作用就是:在第一个类名为div的元素中查找 ID 为 div 的元素
当上述方法传入的CSS表达式有语法错误或不被浏览器支持时会抛出错误
除了上述两种方法之外,W3C的标准中还有一个方法
matchesSelector() 该方法只能对Element进行调用,返回一个布尔值以表示当前元素是否与传入的CSS选择符匹配
该方法的兼容性不是很好,使用时需要注意

如果实在需要使用可以使用兼容写法
下方提供一个兼容函数
function matchesSelector(element, selector){
if(element.matchesSelector){
return element.matchesSelector(selector);
}else if(element.msMatchesSelector){
return element.MatchesSelector(selector);
}else if(element.mozMatchesSelector){
return element.mozMatchesSelector(selector);
}else if(element.webkitMatchesSelecotr){
return element.webkitMatchesSelector(selector);
}else{
throw new Error("Not supported");
}
}
Javascript高级编程学习笔记(46)—— 选择符API的更多相关文章
- Javascript高级编程学习笔记(51)—— DOM2和DOM3(3)操作样式表
操作样式表 在JS中样式表用一种类型来表示,以便我们在JS对其进行操作 这一类型就是CSSStyleSheet 即CSS样式表类型,包括了之前 style 对象所不包括的外部样式表以及嵌入样式表 其中 ...
- Javascript高级编程学习笔记(79)—— 表单(7)选择框脚本
选择框脚本 选择框由<option>和<select>元素创建,为了方便选择框的交互,除了提供表单字段的公有方法之外 HTMLSelectElement 类型还提供下列特有的属 ...
- Javascript高级编程学习笔记(76)—— 表单(4)选择文本
文本框脚本 在HTML中文本框有两种实现方式: <input> <textarea> 这两种实现方式虽然在多数情况下表现一致,但是两者之间仍存在许多重要区别 对于<inp ...
- Javascript高级编程学习笔记(54)—— DOM2和DOM3(6)范围选择
范围 为了让开发人员更加方便地控制页面“DOM2级遍历和范围”模块定义了“范围”接口 通过该接口开发人员可以选择文档中的一个区域,而不必考虑元素的界限 在常规操作不能有效地修改文档时,使用范围往往可以 ...
- Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件
键盘与文本事件 用户在使用键盘时会触发键盘事件 “DOM2级事件”最初规定了键盘事件,但是最后在定稿时又删除了相应内容 所以键盘事件被放入了DOM3级事件的规范中 总的来说有三个键盘事件: keydo ...
- Javascript高级编程学习笔记(37)—— DOM(3)Element
Element类型 除了Document类型之外,Element类型应该就是web编程中最常用的类型了 Element类型主要用于表现XML.HTML元素,提供对元素标签名.子节点以及特性的访问 特性 ...
- Javascript高级编程学习笔记(23)—— 函数表达式(1)递归
前面的文章中,我在介绍JS中引用类型的时候提过,JS中函数有两种定义方式 第一种是声明函数,即使用function关键字来声明 第二种就是使用函数表达式,将函数以表达式的形式赋值给一个变量,这个变量就 ...
- Javascript高级编程学习笔记(21)—— 对象原型
JS中对象相关的最重要的恐怕就是原型链了 原型链也是JS中对象继承的实现的基础 接昨天的文章,我们使用构造函数创建对象的时候仍然存在一些问题 那就是所有的实例没法共用一个函数 这样无疑会造成极大的内存 ...
- Javascript高级编程学习笔记(3)—— JS中的数据类型(1)
前一段时间由于事情比较多,所以笔记耽搁了一段时间,从这一篇开始我会尽快写完这个系列. 文章中有什么不足之处,还望各位大佬指出. JS中的数据类型 上一篇中我写了有关JS引入的Script标签相关的东西 ...
随机推荐
- linux服务器使用Jenkins+gradle+git打apk包,报错Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)
linux服务器使用Jenkins+gradle+git打apk包,遇到的错误Gradle build daemon disappeared unexpectedly (it may have bee ...
- MUI手势锁
通过mui提供的手势锁插件实现,手势锁样式.存储需要自己完成. 1.样式展示 2.实现 2.1 html 需要一个div容器 <div class="mui-content" ...
- ORA-15137: cluster in rolling patch
oracle 12.1.0.2,给diskgroup加盘的时候报错ORA-15137: cluster in rolling patch 确认两节点补丁相同 crsctl query crs soft ...
- Subplot 多合一显示
1.均匀图中图 matplotlib 是可以组合许多的小图, 放在一张大图里面显示的. 使用到的方法叫作 subplot. 使用import导入matplotlib.pyplot模块, 并简写成plt ...
- python基础:条件循环字符串
一. 完成完整的温度转换程序 使用while True 循环,摄氏度转换为华氏度按1,华氏度转换成摄氏度按2,按其他数字退出循环. while True: a = int(input('摄氏度转换为华 ...
- 第5-7次OO作业总结分析
(1)从多线程的协同和同步控制方面,分析和总结自己三次作业来的设计策略及其变化. 第五次作业 第五次作业是对多线程的初步探索,所以对于多线程的基本书写机制的认识比较多.本次作业难点在于了解多线程的运作 ...
- 代码简洁的滑动门(tab)jquery插件
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org ...
- Node.js server-side javascript cpu占用高
也不知道微软咋想的,不搞死我们的电脑不罢休 https://developercommunity.visualstudio.com/content/problem/27033/nodejs-serve ...
- core里使用log4net
1. nuget 里安装 log4net 2. startup.cs里配置读取配置文件 public static ILoggerRepository repository { get; set; } ...
- pd16.5增加字段备注
EXEC sp_addextendedproperty 'MS_Description', %.q:COLNNAME%, 'user', dbo, 'table', %TABLE%, 'column' ...