高效jQuery选择器的5个技巧实例分析


Posted in jQuery onNovember 26, 2019

本文实例讲述了高效jQuery选择器的5个技巧。分享给大家供大家参考,具体如下:

顾名思义,jQuery专注于查询(queries)。库的核心允许你使用CSS选择器语法,以及通过在集合上执行函数,来查找DOM元素。

jQuery使用浏览器原生API方法获取DOM集合。现代浏览器支持getElementsByClassName, querySelector以及querySelectorAll(可以解析CSS语法)。然而,老版本的浏览器可能只提供getElementById以及getElementByTagName。在最坏的情况下,jQuery的Sizzle引擎必须解析选择器字符串来匹配元素。

下面是可以帮助你优化jQuery选择器的5点提示:

1. 尽量使用ID

HTML ID属性在每一个页面上都是唯一的,并且即使老版本的浏览器也可以非常迅速地定位一个元素:

$("#myelement");

2. 避免只使用类名称

下面的类选择器在现代浏览器中执行迅速:

$(".myclass");

不幸的是,在老版本的浏览器,比如IE6/7和Firefox 2,jQuery必须检查页面上的每一个元素来确定“myclass”是否被元素所包含。

如果通过标签名加以限定可以让选择器更加的高效,例如:

$("div.myclass");

jQuery现在可以将搜索范围限定在DIV元素。

3. 保持简单!

避免过于复杂的选择器。除非你要查找一个极其复杂的HTML文档,很少有需要使用多于2,3个修饰符的情况。

考虑下面的复杂选择器:

$("body #page:first-child article.main p#intro em");

p#intro 一定是唯一的,因而选择器可以这样简化:

$("p#intro em");

4. 从左往右增加特异性

了解一点jQuery选择器引擎的相关知识是有帮助的。查找首先从最后一个选择器开始,因此,在老版本的浏览器中,一个类似于这样的查询:

$("p#intro em");

将所有的em元素加载进一个数组。然后判断每一个节点的父元素,进而排除那些找不到p#intro父节点标签的元素。如果页面上包含数百个em标签的话,查询会变得十分的低效。

根据你的文档,查询可以通过优先使用最佳限定符来获得优化。其结果可以作为子选择器的出发点,例如:

$("em", $("p#intro")); // or
$("p#intro").find("em");

5. 避免重复选择

很少需要重复使用同样的选择器两次。下面的代码对每一个p标签都选择了3次:

$("p").css("color", "blue");
$("p").css("font-size", "1.2em");
$("p").text("Text changed!");

记住jQuery支持链式操作;多个方法可以应用于同一个集合之上。因此,同样效果的代码可以通过单一的选择器重写:

$("p").css({ "color": "blue", "font-size": "1.2em"}).text("Text changed!");

如果需要多次使用同一组元素集合,你应该将jQuery对象使用变量加以缓存,例如:

var $p = $("p");
$p.css("color", "blue");
$p.text("Text changed!");

与标准的DOM集合不同,jQuery集合并不是实时的,并且对象不会在paragraph标签从文档中新增或者移除时自动更新。你可以利用这个限制,创建DOM集合,并在需要时将其传递给jQuery函数,例如:

var p = document.getElementByTagName("p");
$(p).css("color", "blue");
// update the DOM
$(p).text("Text changed!");

原文链接:5 Tips for More Efficient jQuery Selectors

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
详解jquery选择器的原理
Aug 01 jQuery
使用jQuery实现购物车结算功能
Aug 15 jQuery
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 jQuery
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
Oct 19 jQuery
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 jQuery
jQuery+koa2实现简单的Ajax请求的示例
Mar 06 jQuery
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
jQuery插件Validation表单验证详解
May 26 jQuery
jQuery实现为动态添加的元素绑定事件实例分析
Sep 07 jQuery
jQuery实现可编辑的表格
Dec 11 jQuery
Jquery Fade用法详解
Nov 06 jQuery
jquery使用echarts实现有向图可视化功能示例
Nov 25 #jQuery
jQuery Raty星级评分插件使用方法实例分析
Nov 25 #jQuery
jquery 插件重新绑定的处理方法分析
Nov 23 #jQuery
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
Nov 18 #jQuery
Jquery让form表单异步提交代码实现
Nov 14 #jQuery
JQuery发送ajax请求时中文乱码问题解决
Nov 14 #jQuery
Jquery异步上传文件代码实例
Nov 13 #jQuery
You might like
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
详谈PHP文件目录基础操作
2014/11/11 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
python threading模块操作多线程介绍
2015/04/08 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
python爬取代理ip的示例
2020/12/18 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
公司培训心得体会
2014/01/03 职场文书
单位活动策划方案
2014/08/17 职场文书
spring boot中nativeQuery的用法
2021/07/26 Java/Android
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server