使用find()比使用>用于jQuery中的子选择器
Is it more efficient to use find() rather than > for child selector in jQuery?
在jQuery中,我认为使用实现1查找具有特定选择器的子DOM将更有效,如下所示:
var $dataTable = $('#' + tabId + ' > div.container > div.dataTableContainer > table.dataTable');
但是我的一个朋友告诉我使用的时候效率会更高实现2如下:
var dataTable = $('#' + tabId).find('table.dataTable');
参考其他问题,我发现实现2的效率可能低于:
var $dataTable = $('#' + tabId + ' div.container div.dataTableContainer table.dataTable');
但是实现2会比实现1更有效吗?
document.querySelector()
有直系后代选择器时,>
最快,.find()
最慢。
var tabId = "abc";
console.time(".find()");
var $dataTable = $('#' + tabId).find('table.dataTable');
console.timeEnd(".find()");
console.time("jQuery(), >");
var $dataTable = $('#' + tabId + ' > div.container > div.dataTableContainer > table.dataTable');
console.timeEnd("jQuery(), >");
console.time("document.querySelector()");
var $dataTable = document.querySelector('#' + tabId + ' div.container div.dataTableContainer table.dataTable');
console.timeEnd("document.querySelector()");
console.time("document.querySelector(), >");
var $dataTable = document.querySelector('#' + tabId + ' > div.container > div.dataTableContainer > table.dataTable');
console.timeEnd("document.querySelector(), >");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="abc">
<div class="container">
<div class="dataTableContainer">
<table class="dataTable">
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
我猜:
$('#XXX whatever')
在引擎盖下做了一个本地document.queryselectorAll()
,它将检查文档中的所有元素,看看它们是否匹配' #xxx whatever
'
$('#XXX').find('whatever')
首先执行document.getElementById('XXX')
,找到具有id="XXX"
的元素,然后在该元素中执行queryselectorAll()
,因此要测试的子元素较少,看看它们是否匹配' whatever
'
但是这个猜测完全被真实数据否定了——看看@guest271314的答案
相关文章:
- jQuery-用于切换内容的自定义插件
- jQuery-用于检查是否有任何字段不为空,然后将所有字段设为必需字段的代码
- jQuery用于识别URL和附加参数
- 如何进行仅将 jQuery 用于回调的老式 HTML 表单提交
- Jquery 用于检查输入是否具有特定名称
- Jquery 用于在单选按钮中保留选中的值
- jQuery 用于选项卡的功能不起作用
- 如何使用纯javascript加载jquery,并将加载的jquery用于ajax请求
- 如何从jquery.cache对象中找到jquery用于数据存储的元素
- Jquery-用于多个输入框场景的If语句
- 将 jQuery 用于自己的属性
- Jquery用于修改页面上的所有锚标记href,并从href属性中提取关键请求参数
- Javascript或jQuery用于拍摄视频文件的第一秒快照
- 如何在javascript中使用for循环,jquery用于表中的行数
- 在没有jQuery用于选择所有下拉列表的情况下,相当于$(“select”)
- jQuery用于流控制的逻辑运算符,而不是使用if语句
- Javascript或JQuery用于ASP.净RadioButtonGroup
- JQuery用于将选择选项文本放入输入
- 使用JQuery(用于创建比较)避免重复的下拉项
- JQuery用于取消选中和选中复选框的干燥代码