jQuery后代选择器性能

时间:2013-04-13 04:14:55

标签: javascript jquery performance

我有一个jQuery选择器:

$('#myId span')

这真的是表演犬vs:

$('#myId').find('span')

第一个显然是写得更清洁,如果可能的话,我想坚持下去。

1 个答案:

答案 0 :(得分:5)

测试:http://jsperf.com/descend-from-id-vs-select-and-find/3

$('#myId span')将导致jQuery使用其Sizzle选择器引擎解析字符串,从右向左读取它,开始使用span进行搜索。

$('#myId').find('span')将导致jQuery立即选择#myId(绕过使用Sizzle解析的步骤),然后遍历DOM,多个级别,以查找所有后代。

所以后者更快。

你也可以试试$('#myId').children('span'),在某些情况下可能更快,因为它只会下降一个级别才能找到孩子(而不是发现,这会继续)。