javascript-一个标记名,多个attrs-更快地使用过滤器阻止查询或使用多个选择器?

我想知道以下哪个jQuery查询会更快.我正在寻找匹配具有src属性或data-src属性的所有span标签的方法.

var a = $('span[src],span[data-src]');


var b = $('span').filter('[src],[data-src]');

我的直觉是(b),但可能有一些我不知道的优化.

谢谢.

更新:

基于对100 x span [src],100 x span [data-src]和100 x span元素进行的快速测试:(a)的速度大约是浏览器的4-8倍.在IE8上,速度要快得多(大约50倍),而在IE6 / 7上,速度差不多.

我想知道的是为什么它速度更快?

在(a)情况下,jquery将整个选择器查询委托给本机querySelectorAll(如果可用).因此,看起来较慢的查询实际上在现代浏览器中非常快.

解决方法:

http://jsfiddle.net/B9Vmy/1/,我进行了一些测试(将Firebug用于控制台)

对于6000个跨度(2000个跨度,2000带src,2000、2000带data-src),此命令耗时约8ms,因此选择部分可以忽略不计.使它如此缓慢的原因是jQuery对象(jQuery(element))的创建.

虽然A仅对返回的结果执行一次该操作,但是B对每个元素都进行了处理,然后使用这些结果,并对返回的结果再次进行该操作.

然后是可能使用的嘶嘶声引擎来选择元素…看一下筛选器时机:-)

上一篇:javascript-Ajax v.在HTML中包含数据


下一篇:缓存性能像内存一样的数据集并将其与数据库更改绑定的最佳方法是什么?