【发布时间】:2016-10-12 08:23:27
【问题描述】:
在 jQuery 中,我认为使用 实现 1 找到具有特定选择器的子 DOM 会更有效,如下所示:
var $dataTable = $('#' + tabId + ' > div.container > div.dataTableContainer > table.dataTable');
但是我的一位朋友告诉我,使用时效率会更高 实现2如下:
var dataTable = $('#' + tabId).find('table.dataTable');
参考other question,我发现实现2的效率可能低于:
var $dataTable = $('#' + tabId + ' div.container div.dataTableContainer table.dataTable');
但是实施 2 会比 实施 1 更有效吗?
【问题讨论】:
-
第一个代码由原生 javascript 搜索运行,第二个是 jquery 搜索。
-
去寻找,在 jquery 的所有性能测试中,结果都是最好的,比 $('table.dataTable', $('#' + tabId)) 或选择器等上下文更快。跨度>
-
没有。 1sd 给
#tabId > .cont > .data > .table,2nd 给#tabId .table -
>仅表示直接后代,而.find()等效于" "(空格) - 它将搜索所有后代。>的等价物是.children()。如果您的顶级节点下有大量 DOM 元素层次结构,>会更快。 -
这应该显示选择器之间的差异:sitepoint.com/jsperf1
标签: javascript jquery