这些jQuery JavaScript中的哪一个将具有更好的性能
Which of these jQuery JavaScripts will have better performance?
我有带有标题的部分。单击页眉将折叠并展开其下方的部分。出于样式设置目的,还会对标头应用或删除类。其中有 9 个部分和标题。
$('.header').click(function() {
$(this).toggleClass('open');
$(this).next().slideToggle();
});
我试图提高移动设备的性能。我的意思不是页面加载时间,而是动画的平滑度和在触发公告之前触摸标题后的延迟。
我读到使用 ID 比类更快。接下来会快多少?(注意,它需要重复 9 次,并显示前 2 次)。我还假设使用 ID 比使用 .next() 遍历 DOM 更快,这将产生多大区别?
$('#header1').click(function() {
$(this).toggleClass('open');
$('#section1').slideToggle();
});
$('#header2').click(function() {
$(this).toggleClass('open');
$('#section2').slideToggle();
});
注意,我知道这有点拐杖,但我想使用jQuery而不是普通的JavaScript。jQuery库无论如何都会被加载,因为它在站点的其他地方使用。谢谢
这根本不重要。虽然 ID 查找确实是最快的,但现代浏览器优化了基于选择器的查找,因此它们都非常快,除非您执行需要迭代整个文档的操作(例如[someattribute]
选择器)。
但是,$('.header')
使您免于重复代码,因此是要走的路。除此之外,它的可读性更强 - 在第二个示例中,如果不查看 DOM,您甚至不知道它影响的元素在哪里。
因此,与其尝试优化不需要优化的内容,不如保持代码干净且可维护!
方法会稍微快一些,但是轻微的收益将被代码的丑陋和不可维护性所抵消。
使用第一个选项。
技术上:
ID 引用方法是在不支持 getElementByClassName
的浏览器中更快的 DOM 查找。但是,由于必须解析两倍的代码量并应用两个单击处理程序,这会被抵消。.live() 可能更快,因为它只绑定到主体并在以后进行查找。
实际上:
差异可以忽略不计。这是微优化领域。代码中可能还有比这更大的速度因素。
id 作为选择器更快,但为了可维护性,你真的想要重复的代码吗?
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 什么对性能更好:每个元素的事件或一个具有委派的事件
- 哪一个在访问数组长度方面的性能更好
- 不要为机器人(谷歌和其他)加载JS脚本以获得更好的性能
- 优化javascript/jQuery以获得更好的性能
- 更好的性能?200+ 个单独的结果页面或 200+ 个条件(如果还有其他梯形图或开关大小写?)在 Javascript/
- 如何替换getImageData和putImageData以获得更好的性能
- 使用类与 ids 用于多个 li 元素示例 20,具有 KNOCKOUT 和 jQuery,性能和可保留性更好
- 无论如何,优化此视差脚本以获得更好的性能
- 这些jQuery JavaScript中的哪一个将具有更好的性能
- 打字稿 0.9.1 : 非常慢的智能感知 我应该回到 0.8.3 以获得更好的性能吗?
- 向 DOM 添加一个简单的图像标记,而不是使用 GWT 控件以获得更好的 JS 运行时性能
- 性能方面:拥有许多小型 ajax php 控制器脚本还是一个大型脚本更好
- 在性能方面使用.delete()更好吗
- jQuery:通过检查绑定元素是否存在,可以获得更好的性能
- 预排序数据或Angular orderBy哪个性能更好
- 如何在地图上绘制标记以获得更好的性能
- 如何通过画布从Html 5视频中获得更好的性能
- 隐藏HTML元素的性能更好的方法是什么
- kendou网格的更换,需要一种具有更好性能的网格