jQuery性能:多选择器与带上下文的选择器

时间:2012-09-05 23:00:49

标签: jquery performance selector

想知道以下哪项被认为是正确的做事方式。如果我有以下html:

<div id="container">
    <div id="form">
        <div class="field">TEXT</div>
    </div>
</div>

我想使用jQuery在字段中检索文本,这更好(以及为什么)。多个选择器:

$("#container #form .field").text();

或使用上下文:

$((".field", $("#form")), $("#container")).text();

这是一个包含:http://jsfiddle.net/f8LKc/

的小提琴

2 个答案:

答案 0 :(得分:4)

您应该只使用$('#field'),因为它是一个ID选择器,只有<div id="field">的一个实例。

答案 1 :(得分:1)

没有什么比运行基准来测试两种方法的性能更好的了。我在jsperf.com上创建了一个测试用例,测试了你的两种方法,以及按类$(".field")进行选择:

Testing in Chrome 21.0.1180.89 32-bit on Windows Server 2008 R2 / 7 64-bit Test 

+-----------------------+---------------------------+
| Test                  | Ops/sec                   |
+-----------------------+---------------------------+
| Multiple Selector     |  43,265  67% slower       |
+-----------------------+---------------------------+
| Selector w/ Context   | 130,051  fastest          |
+-----------------------+---------------------------+
| Selector w/ Class     | 126,064  2% slower        |
+-----------------------+---------------------------+

<强> TEST CASE