到处都是jQuery选择器的年代 不了解它们的性能,行吗


Posted in Javascript onJune 18, 2012

最近,我就对jQuery的选择器使用做了一些个小小的实验,用来说明jQuery的不同选择器在不同的情况下,哪个效率更高,更值得使用。

先在每个测试页面的head中引入google提供的jquery文件和用于测试的小插件firejspt。

<!-- 引入FireJSPT的库文件 --> 
<script type="text/javascript" src="firejspt.js"></script> 
<!-- 引入google提供的1.44版的jQuery的库文件,其实哪个版本都无所谓了,呵呵 --> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

1. 最常用的id选择器和class选择器
将以下代码复制200次,置于body标签内。
<div id="ilian">比较id选择器和class选择器</div> 
<div class="ilian">比较id选择器和class选择器</div>

用于本次测试的JS代码如下:
function ilianTest01(){ 
$('#ilian').click(function() { alert('Hello World'); }); 
} function ilianTest02(){ 
$('.ilian').click(function() { alert('Hello World'); }); 
} 
/*调用2个函数进行测试*/ 
$(function(){ 
jspt.test(function(){ ilianTest01(); }); 
jspt.test(function(){ ilianTest02(); }); 
});

测试结果如下:

到处都是jQuery选择器的年代 不了解它们的性能,行吗

由图可以id选择器相比于class选择器的效率优势是非常地。。。。。

2. 在选择标签时,层级选择器用得也非常频繁,这次对比测试直接子标签符号“>”和children。

将以下代码放入body标签内,并将其中的li标签复制500次。

<ul id="ilian"> 
<li>比较直接子标签符号“>”和children</li> 
<li>比较直接子标签符号“>”和children</li> 
<li>比较直接子标签符号“>”和children</li> 
<!-- 省略497次 --> 
</ul>

用于本次测试的JS代码如下:
function ilianTest01(){ 
$('#ilian > li').click(function() { alert('Hello World'); }); 
} function ilianTest02(){ 
$('#ilian').children('li').click(function() { alert('Hello World'); }); 
} 
/*调用2个函数进行测试*/ 
$(function(){ 
jspt.test(function(){ ilianTest01(); }); 
jspt.test(function(){ ilianTest02(); }); 
});

测试结果:

到处都是jQuery选择器的年代 不了解它们的性能,行吗

由此可见children选择器要优于直接子标签符号选择器。
限于文章长度,本文只展示了最基本的测试,且以上测试,均是在简单环境中测试的,测试效果并不代表绝对的结论。

Javascript 相关文章推荐
onkeyup,onkeydown和onkeypress的区别介绍
Oct 21 Javascript
javascript事件冒泡和事件捕获详解
May 26 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 Javascript
利用JQuery阻止事件冒泡
Dec 01 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
Jan 05 Javascript
Vue中使用vue-i18插件实现多语言切换功能
Apr 25 Javascript
详解Vue中watch的高级用法
May 02 Javascript
vue使用Google地图的实现示例代码
Dec 19 Javascript
Vue引入Stylus知识点总结
Jan 16 Javascript
typescript配置alias的详细步骤
Aug 12 Javascript
JavaScript逻辑运算符相关总结
Sep 04 Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 15 Javascript
jquery图片延迟加载 前端开发技能必备系列
Jun 18 #Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
Jun 18 #Javascript
Jquery上传插件 uploadify v3.1使用说明
Jun 18 #Javascript
uploadify 3.0 详细使用说明
Jun 18 #Javascript
通过Javascript创建一个选择文件的对话框代码
Jun 16 #Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
Jun 15 #Javascript
精心挑选的15个jQuery下拉菜单制作教程
Jun 15 #Javascript
You might like
超级实用的7个PHP代码片段分享
2012/01/05 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
bootstrap轮播图示例代码分享
2017/05/17 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
python制作一个桌面便签软件
2015/08/09 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
2016/12/18 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
python多进程并行代码实例
2019/09/30 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
keras 多任务多loss实例
2020/06/22 Python
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
几个人围成一圈的问题
2013/09/26 面试题
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
后勤采购员岗位职责
2013/12/19 职场文书
高三历史教学反思
2014/01/09 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB