为什么$('a b')效率低于$('b','a')?

时间:2013-12-31 03:07:26

标签: jquery performance

我正在创建一个将RGB颜色转换为十六进制代码的功能,反之亦然。 HTML是div中的一组6个输入(其ID为rgbHex)。我想在用户输入6个文本框中的任何一个时调用此函数。

对于那些想要代码的人:

<div id="rgbHex">
    <input id="hr" /> &nbsp; <input id="hg" /> &nbsp; <input id="hb" /> <br/>
    <input id="rr" /> &nbsp; <input id="rg" /> &nbsp; <input id="rb" /> <br/>
</div>

由于我正在使用的网页有多个<input>,我想确保只在用户输入这6个文本框之一时调用该函数。

当我在我的IDE中输入$('#rgbHex input')时,它给出的警告是Inefficient jQuery Usage。当我使用$('input', '#rgbHex')时,警告会消失。所以我的问题是:为什么后者比前者更有效?

1 个答案:

答案 0 :(得分:2)

效率不是很低,但可以通过编辑器建议将上下文分开来进行微观优化;它大致相当于:

$('#rgbHex').find('input')

这内部优化,可立即使用getElementById()getElementsByTagName(),而无需使用Sizzle执行查询。

与任何事情一样,这是否有所作为只能通过自己的测量来客观地确定。