Jquery 为什么美元(';ab';)的效率低于美元(';b';,';a';)?

Jquery 为什么美元(';ab';)的效率低于美元(';b';,';a';)?,jquery,performance,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

我正在做一个函数,将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>



由于我放置它的网页有多个
s,因此我希望确保仅当用户在这6个文本框中键入时才调用该函数


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

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

$('#rgbHex').find('input')
这在内部经过优化,可以立即使用
getElementById()
getElementsByTagName()
,而不必使用Sizzle执行查询


与任何事情一样,这是否会产生影响只能通过自己的测量来客观地确定。

关于
$(“#rgbHex input”)
没有任何“低效”之处。您必须在多个浏览器中运行性能测试,以查看
$('input','#rgbHex')
是否稍微快一点,但我怀疑性能差异是否与安装一些事件处理程序有关。FYI,考虑的第三个选项是:代码> $('yrgbxEx)。查找(“输入”)< /代码>。所有这些都应该产生相同的结果,但只是用不同的方式来表达您试图做的事情。您的代码中是否有多次
$('#rgbHex input')
?每当我的IDE(PhpStorm)看到你使用同一个选择器两次时,它就会发出警告——它希望你将它分配给一个变量,而不是重复选择。我不确定$('input','#rgbHex')是否完全有效。我认为第二个选择器将被忽略,因此您将选择所有输入。你证实了吗?@Brandon第二个论点是正确的
$('input','rgbHex')
类似于
$('rgbHex')。find('input')
@Brandon有点正确。文档中说,
context
是一个元素或jQuery对象。但它恰好与选择器字符串一起工作。