为什么要缓存jQuery对象?
Why cache jQuery objects?
那么我们为什么要缓存jQuery对象呢?
在以下场景中:
var foo = $('#bar');
foo.attr('style','cool');
foo.attr('width','123');
$('#bar').attr('style','cool');
$('#bar').attr('width','123');
为什么第一种选择比第二种选择好得多?
如果是因为性能,它是如何减少使用的?
因为jQuery函数中有很多代码,如果使用相同的输入期望相同的输出多次执行它,会带来不必要的开销。通过缓存结果,您存储了对您正在查找的确切元素或元素集的引用,这样您就不必再次搜索整个DOM(即使这是一个相当快的搜索)。在许多情况下(包含少量代码的简单页面),您不会注意到差异,但是在您注意到的情况下,差异可能会很大。
您可以通过在jsPerf中测试您的示例来看到实际效果。
出于可读性的考虑,您也可以将其视为介绍解释变量重构模式的一个示例,特别是对于比问题中的示例更复杂的示例。
jQuery选择器$('#foo')
在整个DOM中搜索匹配的元素,然后返回结果。
缓存这些结果意味着jQuery不必在每次使用选择器时都搜索DOM。
编辑:document.getElementById()
是jQuery用来搜索DOM,但从来没有足够的jQuery。
相关文章:
- 如何删除对象数组中的对象:jquery
- 为一个声音元素数组创建一个音频对象jquery,javascript
- 在原型对象 jquery 上将一个按钮与另一个按钮不同
- 编辑对象 jQuery 的属性
- ajax 正在用多个调用覆盖 XHR 对象 - jQuery
- 传递值并将其显示为对象 - jquery
- 如何将变量名转换为对象jQuery的索引字符串
- 访问多个动态对象 jQuery
- 使用OptGroup从两个分离的JSon对象JQuery填充Select
- 显示对象jquery中的数据
- 清空Javascript对象(Jquery Mobile)
- null不是对象-jQuery+传单
- 当事件是由单元格中的对象jQuery引起时,如何更改该单元格的自定义属性
- 未捕获类型错误:Property '$'对象- jQuery
- 从数组对象Jquery中移除对象
- 将属性值转换为对象(jquery或javascript)
- 不知道如何排序这个JSON对象jQuery/JavaScript
- 解析和字符串化json对象jquery
- 插入对象(jquery)延迟
- HTML ' img '标签不能在对象jquery中显示为图像