Q
伪选择器vs方法
0
A
回答
3
更新:显然表达的解析招致大量的开销。 在我的quick benchmark.first()
比使用选择器快很多。
表达式简单归结为$ .expr对象like explained here
实际执行上的方法:第一VS的。首先()不同的一点:
这里的代码:上$.expr.setFilters.first
第一
function (elem, i) {
return i === 0;
}
而$.fn.first
简直是.eq(0)
的缩写:
我实现第一()这样的,如果它不存在:
$.extend($.expr[':'],{
first: function(a) {
return $(a).first();
}
});
这也意味着:首先是一个简单的过滤元件的名单上,而.first()是一个更有效的reduce操作。
Update2:Doh - 应该有read the docs。由于jQuery试图在现代浏览器中使用原生CSS选择器,并且:first
没有CSS规范的选择器,它总是会比真正的选择器差得多,它可以利用浏览器原生CSS搜索方法(而jQuery必须模拟该行为在JS)
0
我不完全确定,但我的猜测是,它会在内部工作相同,所以表现不会有太大的差异。但我可能完全错误。
1
$('li').first()
约比使用$('li:first')
快十倍。 使用Firefox 3.6
进行测试。使用
100,000 iterations:
55,870ms using :first
5,858ms using .first()
验证码:
$(document).ready (function() {
var i, time = +new Date;
for (i = 0; i < 100000; ++i) {
$('li:first');
}
console.log ((+new Date) - time);
time = +new Date;
for (i = 0; i < 100000; ++i) {
$ $('li').first();
}
console.log ((+new Date) - time);
});
相关问题
- 1. Flex伪选择器
- 2. CSS伪类与伪选择器
- 3. ::选择伪选择器忽略::伪元素之前
- 4. CSS伪类选择器
- 5. angular2伪选择器样式
- 6. 使用伪选择器jquery
- 7. CsQuery伪选择器异常
- 8. 错误的伪选择器
- 9. JQuery类选择器vs id选择器
- 10. angular.element选择器vs jquery选择器
- 11. 使用伪选择
- 12. jQuery选择器:多重选择vs select
- 13. IE8中的链式伪选择器
- 14. 类选择器后的伪类?
- 15. 溢出:隐藏和:在伪选择器
- 16. css伪选择器不工作div
- 17. 使用伪选择器::之后
- 18. 结合多个伪选择器
- 19. 使用伪选择器嵌套Sass Ampersand
- 20. 与变量选择jQuery的伪选择
- 21. CSS伪选择器:伪活动之后:悬停
- 22. CSS伪选择器来选择querySelector内的当前元素?
- 23. 无法定位:在JSS中的伪选择器之前
- 24. box-shadow ::选择伪元素
- 25. 选择:伪类后元素
- 26. jquery选择器vs css3选择器的性能
- 27. CSS多个子选择器vs单标签选择器性能
- 28. 道场日期选择器jQuery的Vs的日期选择器
- 29. CSS属性选择器vs CSS选择器
- 30. CSS选择器优先级 - 为什么td高于伪选择器?
如果你不关心性能,你不是一个程序员。不感兴趣 - 只是移动。 – Arnthor
我不关心性能,除非它是一个严重的问题。 – BoltClock