到处都是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 相关文章推荐
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
Jun 02 Javascript
解析javascript 数组以及json元素的添加删除
Jun 26 Javascript
jQuery中empty()方法用法实例
Jan 16 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
Jun 22 Javascript
基于JavaScript实现智能右键菜单
Mar 02 Javascript
js实现页面跳转的五种方法推荐
Mar 10 Javascript
详解Angular2中的编程对象Observable
Sep 17 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
jQuery模拟窗口抖动效果
Mar 15 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
Jun 22 Javascript
Angularjs 1.3 中的$parse实例代码
Sep 14 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
Aug 22 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
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
使用ECharts实现状态区间图
2018/10/25 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python多线程下信号处理程序示例
2019/05/31 Python
简单的Python调度器Schedule详解
2019/08/30 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
智能电子应届生求职信
2013/11/10 职场文书
计划生育目标责任书
2015/05/09 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript