对于性能,哪个更快?
$('#' + strControlId);
或
$('#' + strControlId, $('#' + strContextId));
答案 0 :(得分:2)
要回答你的问题,第一个会更快。你只会调用一次getElementById。
需要注意的一件事是context参数需要HTML节点而不是jQuery对象。在您的情况下,第二个项目仍在文档而不是
中搜索$('#' + strContextId)
确保将[0]添加到jQuery对象的末尾以传递HTML节点。
要对此进行测试,您可以使用context属性来检查选择器从哪个上下文中进行选择。对于上面的示例,您可以执行此操作
console.log($('#' + strControlId).context);
console.log($('#' + strControlId, $('#' + strContextId)).context);
你会发现他们都返回“文档”上下文。如果你运行
console.log($('#' + strControlId, $('#' + strContextId)[0]).context);
它应该返回$('#'+ strContextId)指向的任何元素。
答案 1 :(得分:0)
我认为第一个会更快(它做得更少)。虽然当我考虑使用context参数时,我想到的做法是访问来自iframe
的父文档中的字段或类似的东西:
var el = $('#' + strControlId, parent.document);
如果你真的很好奇,你可以尝试一些基准。
答案 2 :(得分:0)
由于您使用ID作为查询,我怀疑它是否更快。
这是一个很好的例子。
var inputs = $('input');
$('[class=this][name=that]', inputs).css('color', 'red');