授权协议: 未知
开发语言: JavaScript
操作系统: 跨平台
收录时间: 2012-10-23
提 交 者: hackwaly

1, 和Sizzle的兼容
Q(expr, context, result, seed)
Q.matches
支持Sizzle特别的setFilter伪类如:even,:first,:last,:lt...
支持复杂的:not和:has选择器(和sizzle一样)

2, 结果的正确性
Sizzle在某些选择器上由于查询策略的原因,会返回错误的结果
考虑在这样的html上查询
"<div/><h1/><h1/><div/>"
查询 div~div : 应返回1个节点
查询 h1~div: 应返回1个节点
查询 div+h1~div: 应返回一个节点,但是Sizzle没有找到节点

另外
div.querySelectorAll("body *")会返回节点
所以在以元素为context的查询中不使用querySelectorAll进行优化

3, 性能
将选择器编译成函数再进行查询,除了第一次查询需要jit编译之外,以后每次查询都是最快的速度
查询策略引擎会分析选择器的组成,选择最恰当的查询策略(从开始查还是从末尾查还是从中间开始)
排除不必要的运算,如sizzle中的:lt伪类,这里查询时找够节点就会跳出查询,不会继续做无谓的查询

展开阅读全文

代码

Q.js 的相关资讯

还没有任何资讯

Q.js 的相关博客

Object.defineProperty

对象是由多个名/值对组成的无序的集合。对象中每个属性对应任意类型的值。 定义对象可以使用构造函数或字面量的形式: var ob...

使用C语言为QuickJS开发一个原生模块

为QuickJS编写原生模块的基础介绍 不久前,QEMU和FFmpeg的创建者Fabrice Bellard发布了一个全新的Javascript引擎。 这引起了我...

PyQt5学习笔记003——Qt的架构

在开发PyQt程序以前,我们先来了解一下什么是Qt! 根据官方wiki的解释,Qt是跨平台的应用程序开发框架,可以开发桌面程序、嵌...

【Qt笔记】Qt 模块简介

Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中。

QT5(六):Qt模块介绍

Qt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改。Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中。Qt 4 也有模...

Qt5 模块介绍

这个很重要,有了框架看起来才不会那么乱

Babel下的ES6兼容性与规范

es6 babel 规范。ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也...

评论 (0)

加载中
更多评论
0 评论
1 收藏
分享
在线直播报名
返回顶部
顶部