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. 伪选择器
- 2. Flex伪选择器
- 3. jquery筛选器选择器vs筛选器方法
- 4. CSS伪类与伪选择器
- 5. ::选择伪选择器忽略::伪元素之前
- 6. jQuery - 2个伪选择器?
- 7. CSS伪类选择器
- 8. CsQuery伪选择器异常
- 9. angular2伪选择器样式
- 10. 使用伪选择器jquery
- 11. 错误的伪选择器
- 12. JQuery类选择器vs id选择器
- 13. angular.element选择器vs jquery选择器
- 14. jQuery ::选择器vs类选择器
- 15. Firefox,查询选择器和可见伪选择器
- 16. 伪类中选择
- 17. 使用伪选择
- 18. jquery查找方法vs传统选择器
- 19. jQuery的查找通过选择器选择元素VS法
- 20. 多选择器vs单选器性能
- 21. :目标伪选择器和标签
- 22. 伪选择器的重复内容值
- 23. 溢出:隐藏和:在伪选择器
- 24. 使用伪选择器::之后
- 25. 使用伪选择器扩展Sass
- 26. css伪选择器不工作div
- 27. IE8中的链式伪选择器
- 28. 在CSS中结合伪选择器?
- 29. 类选择器后的伪类?
- 30. 使用Sass引用父伪选择器。
如果你不关心性能,你不是一个程序员。不感兴趣 - 只是移动。 – Arnthor
我不关心性能,除非它是一个严重的问题。 – BoltClock