选择符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的更多相关文章

  1. Javascript高级编程学习笔记(51)—— DOM2和DOM3(3)操作样式表

    操作样式表 在JS中样式表用一种类型来表示,以便我们在JS对其进行操作 这一类型就是CSSStyleSheet 即CSS样式表类型,包括了之前 style 对象所不包括的外部样式表以及嵌入样式表 其中 ...

  2. Javascript高级编程学习笔记(79)—— 表单(7)选择框脚本

    选择框脚本 选择框由<option>和<select>元素创建,为了方便选择框的交互,除了提供表单字段的公有方法之外 HTMLSelectElement 类型还提供下列特有的属 ...

  3. Javascript高级编程学习笔记(76)—— 表单(4)选择文本

    文本框脚本 在HTML中文本框有两种实现方式: <input> <textarea> 这两种实现方式虽然在多数情况下表现一致,但是两者之间仍存在许多重要区别 对于<inp ...

  4. Javascript高级编程学习笔记(54)—— DOM2和DOM3(6)范围选择

    范围 为了让开发人员更加方便地控制页面“DOM2级遍历和范围”模块定义了“范围”接口 通过该接口开发人员可以选择文档中的一个区域,而不必考虑元素的界限 在常规操作不能有效地修改文档时,使用范围往往可以 ...

  5. Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件

    键盘与文本事件 用户在使用键盘时会触发键盘事件 “DOM2级事件”最初规定了键盘事件,但是最后在定稿时又删除了相应内容 所以键盘事件被放入了DOM3级事件的规范中 总的来说有三个键盘事件: keydo ...

  6. Javascript高级编程学习笔记(37)—— DOM(3)Element

    Element类型 除了Document类型之外,Element类型应该就是web编程中最常用的类型了 Element类型主要用于表现XML.HTML元素,提供对元素标签名.子节点以及特性的访问 特性 ...

  7. Javascript高级编程学习笔记(23)—— 函数表达式(1)递归

    前面的文章中,我在介绍JS中引用类型的时候提过,JS中函数有两种定义方式 第一种是声明函数,即使用function关键字来声明 第二种就是使用函数表达式,将函数以表达式的形式赋值给一个变量,这个变量就 ...

  8. Javascript高级编程学习笔记(21)—— 对象原型

    JS中对象相关的最重要的恐怕就是原型链了 原型链也是JS中对象继承的实现的基础 接昨天的文章,我们使用构造函数创建对象的时候仍然存在一些问题 那就是所有的实例没法共用一个函数 这样无疑会造成极大的内存 ...

  9. Javascript高级编程学习笔记(3)—— JS中的数据类型(1)

    前一段时间由于事情比较多,所以笔记耽搁了一段时间,从这一篇开始我会尽快写完这个系列. 文章中有什么不足之处,还望各位大佬指出. JS中的数据类型 上一篇中我写了有关JS引入的Script标签相关的东西 ...

随机推荐

  1. wpf Binding 小记录

    1.后台属性绑定: Grid g = new Grid() { Width = 60, Height = 100 }; g.SetValue(Panel.ZIndexProperty, 10); // ...

  2. crm开发之用户重置密码

    重置 密码这这功能. 我是没有在,stark组件中. 内置的.所以需要,自己进行定制.也就只是,在已有的增删改查的基础上,再增加一条url  和相对应的  视图函数. 好的是, 我已经预留了,增加的接 ...

  3. 【java-console】如何双击运行可执行jar包及遇到依赖dll报错问题的解决办法

    如何配置双击运行可执行jar包的步骤,请移步到   这里   查看具体的操作,此处不再介绍. 本文主要解决如何处理依赖dll报错的问题解决办法. 我有一个jar包可执行文件运行需要依赖第三方的dll文 ...

  4. CentOS7 查看操作系统版本信息

    CentOS 查看操作系统版本信息1.使用cat /proc/version .uname 查看内核版本 [root@CentOS7 ~]# cat /proc/version Linux versi ...

  5. 基于stm32f427实现SVPWM控制永磁同步开环转动

    1.SVPWM原理简介 PWM(Pulse Width Modulation)脉宽调整,这是一种利用面积等效原理实现的控制技术.SVPWM(Space Vector PWM)空间矢量PWM控制,因为控 ...

  6. 201621123002《java程序设计》第十二周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何 ...

  7. 使用Tenorshare iCareFone for mac为iPhone做系统修复

    tenorshare icarefonemac中文版采用一键式方法来保护,修理,清洁,优化并最终加快您的iPhone,iPad和iPod的速度.它可以帮助您轻松解决所有iOS问题,并让您的iPhone ...

  8. rsync @ERROR: auth failed on module backup 解决思路及附录rsync常见问题及解决办法

    昨晚小版本上线,使用rsync往服务器上传文件时,client报如下异常: @ERROR: auth failed on module backup rsync error: error starti ...

  9. Appium+Python自动化 1 环境搭建(适用windows系统-Android移动端自动化)

    一.安装并配置 java jdk ①下载 java jdk后 安装,安装完成后,配置环境变量 打开计算机->系统属性->高级系统设置->环境变量->新建(系统变量),如图所示: ...

  10. 图解HTTP第六章

    HTTP 报文 1>HTTP 报文 2>HTTP 请求报文 在请求中,HTTP 报文由方法.URI.HTTP 版本.HTTP 首部字段.报文主体(不一定需要)等部分构成. 3>HTT ...