`

jQuery代码优化:选择符篇

阅读更多
http://www.ituring.com.cn/article/377

jQuery代码优化:选择符篇

毫无疑问,jQuery的独到之处就是它以集合为中心的操作。为了取得DOM对象集合,jQuery利用JavaScript不仅实现了(它诞生时)很多浏览器不支持的CSS选择符,还实现了不少独到的自定义选择符,为在文档中查找元素提供了极大的便利。本文就从选择符的角度简单探讨一下优化jQuery代码的问题。

Sizzle的运行机制

jQuery从1.3开始把根据选择符表达式查找元素的代码独立出来,也就是Sizzle引擎。当我们把一个选择符表达式(比如"#id"、".class"、":nth-child(2)")传递给$()函数时,Sizzle在内部会优先利用浏览器原生支持的DOM方法来查找元素,以求得最大的执行速度。以下就是Sizzle会优先选用的几个标准的原生方法(各个方法的用途不再赘述):

getElementById()
getElementsByTagName()
getElementsByClassName()
querySelectorAll()
如果浏览器不支持某个方法,或者传入的选择符表达式不是标准选择符(如":eq()"、":odd"或其他自定义选择符),Sizzle就会使用document.getElementsByTagName('*')来取得文档中的所有元素,然后再遍历并测试每个元素。显然,这是万不得已才会用的方法;可想而知,这个最笨的方法,效率也是最低的。

优化示例

举个例子,假设我们要取得页面表单中的所有的文本框,即:

<input type="text">
可以使用两个选择符:

$('input[type="text"]')
$('input:text')
第一个选择符是标准的CSS属性选择符,第二个选择符是自定义选择符。根据前面对Sizzle引擎的分析可知,在大多数现代浏览器(支持原生querySelectorAll()方法的浏览器)中,第一个选择符的速度比第二个要快很多。

再举一个例子。假设有下面两个jQuery查询:

$('input').eq(1)
$('input:eq(1)')
第一个查询先通过标准的CSS元素选择符查找所有input元素,然后再调用jQuery的eq()方法取得匹配结果中的第二个元素(eq()方法的索引参数是从0开始计算的)。第二个查询则使用了自定义的伪类选择符:eq()。通过测试可以看出,第一种方法的速度比第二种方法快得就更多了。

结论

要尽可能使用CSS规范中规定的选择符,除非没有标准选择符,才考虑使用jQuery的自定义选择符。

(注:本文基于《jQuery基础教程(第3版)》相关章节内容编撰而成。)
分享到:
评论

相关推荐

    jQuery代码优化 选择符篇

    本文就从选择符的角度简单探讨一下优化jQuery代码的问题。 Sizzle的运行机制 jQuery从1.3开始把根据选择符表达式查找元素的代码独立出来,也就是Sizzle引擎。当我们把一个选择符表达式(比如”#id”、”.class”、”...

    jQuery数字格式化分隔符代码

    例如,通过以下jQuery代码: ```javascript $(document).ready(function() { var number = 123456789; var formattedNumber = $.fn.numberFormat(number, ',', '千'); // 假设这是插件的调用方法 $('#display')....

    jQuery的特效:反选

    这段代码的核心逻辑在于对每个被选中的复选框调用`.attr("checked")`方法,并通过逻辑非操作符`!`来改变其状态。具体步骤如下: 1. **选取目标元素**:使用选择器`$(".divShowinput:checkbox")`来选取所有带有类名`...

    JQuery权威指南源代码

    jQuery代码检测页面元素 使用jQuery基本选择器 使用jQuery层次选择器 使用jQuery基本过滤选择器 使用jQuery内容过滤选择器 使用jQuery可见性过滤选择器 使用jQuery属性过滤选择器 使用jQuery子元素过滤选择器...

    jQuery商品分类四级联动菜单选择代码

    本篇文章将深入解析一款基于jQuery实现的四级联动商品分类选择代码,帮助开发者理解和应用。 首先,jQuery是一款轻量级的JavaScript库,以其简洁的API和强大的功能深受开发者喜爱。在商品分类四级联动菜单中,...

    jQuery权威指南-源代码

    其次详细讲解了jQuery的各种选择器、jQuery操作DOM的方法、jQuery中的事件与应用、jQuery中的动画和特效、Ajax在jQuery中的应用,以及各种常用的jQuery插件的使用方法和技巧,所有这些知识点都配有完整的示例(包括...

    jquery-placeholder:一个简单的 jQuery 占位符插件

    这行代码会将插件应用到所有的 `input` 和 `textarea` 元素上,为它们添加占位符功能。 ### 3. 自定义样式 默认情况下,"jquery-placeholder" 插件会使用浏览器自身的 `placeholder` 样式,但你也可以根据需要...

    jQuery性能优化的38个建议【技术文档】

    在开发使用jQuery的应用时,性能优化是至关重要的,因为JavaScript的...通过遵循这些优化建议,开发者可以显著提高jQuery代码的执行效率,提供更流畅的用户体验。同时,也要根据项目需求和浏览器兼容性灵活调整策略。

    jquery.searchableSelect可选择下拉框

    `jQuery.searchableSelect` 是一个基于 jQuery 库的插件,用于创建可搜索的下拉选择框。在网页开发中,这种组件常用于提供用户友好的界面,使用户能够通过输入关键字快速找到并选择列表中的特定项。这个插件特别适用...

    jquery教程chm格式

    17. 性能优化:使用$(document).ready()而非window.onload来尽早执行脚本,避免使用$符作为选择器前缀以提高性能。 综上所述,《jQuery教程CHM格式》涵盖了jQuery的各个方面,无论是初学者还是经验丰富的开发者,都...

    高效的jQuery代码编写技巧总结

    在编写高效的jQuery代码时,有几个关键点需要注意,以优化性能并提供更好的用户体验。首先,我们需要理解jQuery实际上是在JavaScript的基础上构建的,因此遵循良好的JavaScript编码习惯是至关重要的。 **缓存变量**...

    jQuery数学计算器代码

    jQuery数学计算器代码是一种基于JavaScript库jQuery开发的交互式计算工具,它允许用户在网页上进行基本的数学运算。这个计算器的实现充分利用了jQuery的强大功能,包括DOM操作、事件处理和动画效果,为用户提供了一...

    JQuery-draggable:可拖动和可排序的代码示例

    9. **优化和兼容性**:虽然JQuery draggable和sortable功能强大,但在实际应用中,需要考虑性能优化和跨浏览器兼容性问题。确保只对需要的元素应用这些效果,并利用事件委托减少内存占用。同时,检查不同浏览器对...

    jQuery周日历选择器代码.zip

    《jQuery周日历选择器代码实现详解》 在网页开发中,日历选择器是一种常见的交互元素,用于方便用户选择日期。jQuery库以其强大的DOM操作和丰富的插件库,为开发者提供了实现各种日历选择器的便利。本文将详细介绍...

    仿淘宝门户画报图片相册jQuery代码

    在本项目"仿淘宝门户画报图片相册jQuery代码"中,我们将探讨如何利用jQuery实现一个类似淘宝首页的动态图片相册效果。 这个代码示例的核心目标是创建一个用户体验良好、功能丰富的图片展示平台,类似于淘宝门户中的...

    JQuery实现页面图片懒加载效果仅需两行代码

    在网页设计中,为了提高页面加载速度和用户体验,...总的来说,利用jQuery和lazyload插件,我们可以轻松实现图片的懒加载,优化网页性能,同时保持良好的用户体验。只需简单几步,你的图片密集型网页就能变得更加高效。

    jQuery:AutoComplete使用指南

    3. **初始化AutoComplete**:在文档加载完毕后,通过jQuery选择器定位到要应用AutoComplete功能的输入框,并调用插件的方法。 ```javascript $(document).ready(function() { $("#searchInput").autocomplete...

    tab与图片滚动列表相结合的jquery代码.zip

    本压缩包“tab与图片滚动列表相结合的jquery代码.zip”提供了一种将两者结合的方法,利用JavaScript的jQuery库来实现这一功能。以下是关于这个主题的详细知识点: 1. jQuery库:jQuery是一个轻量级、高性能的...

    jQuery数学计算器代码.zip

    《jQuery数学计算器代码详解》 在网页开发中,创建一个功能齐全的计算器是常见的实践,尤其是在学习JavaScript和jQuery的过程中。本篇文章将详细解析一个基于jQuery的简单数学计算器的实现,帮助你理解其背后的HTML...

    jquery代码

    通过删除不必要的空格、注释和行结束符,以及对代码进行混淆,这个版本将文件大小减至最小,从而提高了页面加载速度。虽然可读性较差,但在生产环境中使用它能够提高网站性能。 jQuery 的核心特性包括: 1. **选择...

Global site tag (gtag.js) - Google Analytics