jQuery性能调优:上下文总是重要的吗?

时间:2010-08-13 08:11:01

标签: jquery performance

我被问到主题的两个变体之间是否存在差异,老实说我不知道​​答案。

给出以下两个功能:

$("table").each(function(){
    $("td", this).live("hover", function(){
        $(this).toggleClass("hover");
    });
});

$("table td").each(function(){
    $(this).live("hover", function(){
        $(this).toggleClass("hover");
    });
});

是否提供了比另一种更好的性能?为什么呢?

3 个答案:

答案 0 :(得分:5)

<强>测量即可。 Firebug和IE8 Web开发人员工具栏具有分析功能。

乍一看,我很想说第二个,就像你在每个方法中进行另一次查找一样,但正如我所说,只有测量可以给你(更多)精确的结果。

答案 1 :(得分:2)

正如其他人所说,分析很重要,测试它,但可能会稍微快一点:

$("td").live("hover", function(){
    $(this).toggleClass("hover");
});

- )

答案 2 :(得分:0)

就像XIII所说,测量可能是获得良好答案的唯一方法。

以下是一些评论:

  • 所有浏览器都实现了getElementByTagName和getElementById。这意味着按标签或按ID选择元素可能始终比按类选择(例如)更快。显然,在这种情况下,您只能通过标签进行选择。

  • 在第一个示例中,您将为每个循环遍历每个td的表构建一个函数,并附加一个事件处理程序。在第二种情况下,您正在为文档中的每个td构建一个函数(可能更多)。这对性能的意义取决于javascript引擎,但我会猜测第一个选项资源不足。