我被问到主题的两个变体之间是否存在差异,老实说我不知道答案。
给出以下两个功能:
$("table").each(function(){
$("td", this).live("hover", function(){
$(this).toggleClass("hover");
});
});
$("table td").each(function(){
$(this).live("hover", function(){
$(this).toggleClass("hover");
});
});
是否提供了比另一种更好的性能?为什么呢?
答案 0 :(得分:5)
<强>测量即可。 Firebug和IE8 Web开发人员工具栏具有分析功能。
乍一看,我很想说第二个,就像你在每个方法中进行另一次查找一样,但正如我所说,只有测量可以给你(更多)精确的结果。
答案 1 :(得分:2)
正如其他人所说,分析很重要,测试它,但可能会稍微快一点:
$("td").live("hover", function(){
$(this).toggleClass("hover");
});
- )
答案 2 :(得分:0)
就像XIII所说,测量可能是获得良好答案的唯一方法。
以下是一些评论:
所有浏览器都实现了getElementByTagName和getElementById。这意味着按标签或按ID选择元素可能始终比按类选择(例如)更快。显然,在这种情况下,您只能通过标签进行选择。
在第一个示例中,您将为每个循环遍历每个td的表构建一个函数,并附加一个事件处理程序。在第二种情况下,您正在为文档中的每个td构建一个函数(可能更多)。这对性能的意义取决于javascript引擎,但我会猜测第一个选项资源不足。