为JQuery ID选择器提供上下文有帮助吗?

时间:2009-09-25 18:08:19

标签: jquery

对于性能,哪个更快?

$('#' + strControlId);

$('#' + strControlId, $('#' + strContextId));

3 个答案:

答案 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');
相关问题