博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【翻译】Jquery性能优化之选择器优化
阅读量:6880 次
发布时间:2019-06-27

本文共 1147 字,大约阅读时间需要 3 分钟。

  原文链接:

  如今,更多的浏览器已经实现了querySelectorAll方法,所以,前端在查找dom时使用选择器的消耗由jquery转移到了浏览器。选择器的优化已经没有以前那么重要了,但是,仍然还是有许多要点需要常记在心的。

  基于id的选择器

  选择器以id开始常常是一个最佳的选择。

1 // fast2 $("#container div.robotarm");3  4 // super-fast5 $("#container").find("div.robotarm");

  方法二效率更高,那是因为$("#container")是不需要经过Sizzle选择器引擎处理的,jquery对仅含id选择器的处理方式是直接使用了浏览器的内置函数document.getElementById(),所以其效率是非常之高的。

  特征性

  使一个选择器的右边更具有特征,相对而言,选择器的左边可以少一些特征性。

1 // unoptimized  优化前2 $("div.data .gonzalez");3  4 // optimized     优化后5 $(".data td.gonzalez");

  再选择器的右边尽可能使用"tag.class"类型的选择符,在选择器的左边直接使用标签选择符或类选择符即可。

  (类似于css选择器,其匹配算法是从右至左的)

  避免过度的约束

1 $(".data table.attendees td.gonzalez");2  3 // better: drop the middle if possible   尽可能移除掉中间的4 $(".data td.gonzalez");

  另外,一个更为“扁平”的DOM结构,会使得选择器引擎在寻找元素时经过的层次数更少,因此这样也是有利于提高选择器的性能的。

  避免使用全局的选择器

  一个会被在多处地方成功匹配的选择器可能会消耗更多的性能。

1 $(".buttons > *");  // extremely expensive2 $(".buttons").children();  // much better3  4 $(".gender :radio");  // implied universal selection5 $(".gender *:radio"); // same thing, explicit now6 $(".gender input:radio"); // much better

 

  

 

转载于:https://www.cnblogs.com/wufeng-sword/archive/2013/02/28/2937826.html

你可能感兴趣的文章
微软的私有云存储协议SMB 3.0的多通道应用
查看>>
解决embed标签设置z-index无效
查看>>
Mysql bin-log日志配置与恢复数据
查看>>
jquery this $(this)
查看>>
xposed hook所有类的所有函数
查看>>
ACM动态规划总结
查看>>
在DNS服务器上如何配置某个域名的指定解析
查看>>
我的友情链接
查看>>
剑指offer:树的子结构
查看>>
为什么我总是这么忧伤
查看>>
Hyper-V的备份与还原(PowerShell)
查看>>
MySQL MyISAM和InNodb备份与恢复技巧
查看>>
SplitContainer 控件扩展之收缩面板
查看>>
AD 重置密码完整脚本
查看>>
安卓的屏幕分辨率的设置
查看>>
Linux cpu性能问题排查
查看>>
linux下的端口扫描工具nmap
查看>>
AX负载均衡配置经验漫谈(1) - 健康检查
查看>>
Linux awk命令详解
查看>>
11.25 配置防盗链11.26 访问控制Directory11.27 访问控制FilesMatch
查看>>