是jQuery的:第一个和:eq(0)选择器在功能上相当吗?

前端之家收集整理的这篇文章主要介绍了是jQuery的:第一个和:eq(0)选择器在功能上相当吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不确定是否在选择器中使用 :first:eq(0).我很确定他们总是返回同一个对象,但是比另一个更快?

我相信有人在这里必须对这些选择器进行基准测试,而且我并不确定测试一个更快的最佳方式.

更新:这是我跑的长凳

/* start bench */
for (var count = 0; count < 5; count++) {
    var i = 0,limit = 10000;
    var start,end;
    start = new Date();
    for (i = 0; i < limit; i++) {
        var $radeditor = $thisFrame.parents("div.RadEditor.Telerik:eq(0)");
    }
    end = new Date();
    alert("div.RadEditor.Telerik:eq(0) : " + (end-start));
    var start = new Date();
    for (i = 0; i < limit; i++) {
        var $radeditor = $thisFrame.parents("div.RadEditor.Telerik:first");
    }
    end = new Date();
    alert("div.RadEditor.Telerik:first : " + (end-start));
    start = new Date();
    for (i = 0; i < limit; i++) {
        var radeditor = $thisFrame.parents("div.RadEditor.Telerik")[0];
    }
    end = new Date();
    alert("(div.RadEditor.Telerik)[0] : " + (end-start));
    start = new Date();
    for (i = 0; i < limit; i++) {
        var $radeditor = $($thisFrame.parents("div.RadEditor.Telerik")[0]);
    }
    end = new Date();
    alert("$((div.RadEditor.Telerik)[0]) : " + (end-start));
}
/* end bench */

我认为第三名是最快的,第四名是最慢的,但是我想出的结果是:

FF3:    :eq(0)  :first  [0] $([0])
trial1  5275    4360    4107    3910
trial2  5175    5231    3916    4134
trial3  5317    5589    4670    4350
trial4  5754    4829    3988    4610
trial5  4771    6019    4669    4803
Average 5258.4  5205.6  4270    4361.4

IE6:    :eq(0)  :first  [0] $([0])
trial1  13796   15733   12202   14014
trial2  14186   13905   12749   11546
trial3  12249   14281   13421   12109
trial4  14984   15015   11718   13421
trial5  16015   13187   11578   10984
Average 14246   14424.2 12333.6 12414.8

我刚刚返回第一个本地DOM对象是最快的([0]),但我不能相信jQuery函数中的对象的包装速度比以下更快:first和:eq(0)!

除非我做错了

解决方法

好问题,好帖子我测试了一段时间,不记得确切的结果.我真的很高兴找到这个,因为这正是我正在寻找的.

我猜这个原因是:first和:eq(0)是一个更慢的原因很可能与解析性能有关.省略这些允许jQuery引擎利用本机getElementsByTagName和getElementsByClassName函数.

没有惊喜i.t.o. DOM元素是访问速度最快的.在for循环中使用jQuery包装DOM元素不一定对性能有不利影响,因为jQuery使用expando属性进行缓存.

然而,看看get(0)如何与DOM元素访问进行比较,以及jQuery如何对eq(0)和其余结果进行换算,这将是有趣的.

原文链接:https://www.f2er.com/jquery/180354.html

猜你在找的jQuery相关文章