2012-09-05 113 views
0

想知道以下哪個被認爲是權利的做事方式。如果我有以下的html:jQuery的性能:多選擇器與選擇器與上下文

<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

你有什麼理由需要所有三個身份?身份在頁面中應該是唯一的,所以通常您只需要使用一個。 – Guffa

+2

如果你使用'id's,最快的應該是'$('#field')'。 – jmoerdyk

+0

對不起,說'field'是內部div的類(見調整後的問題) – dougmacklin

回答

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

+0

很酷,謝謝。我修改了測試用例,使字段成爲一個類而不是一個id來匹配修訂後的問題:http://jsperf.com/multiplevscontextselector/4 – dougmacklin

+0

@DougieBear:哦,好的,沒有看到。我編輯了我的答案,以反映您的修改結果供將來參考。 –

4

你應該只使用$('#field'),因爲它是一個ID選擇只會有一個實例<div id="field">

+0

我會給出這個答案,如果你不願意的話。 – Tadeck

+0

對不起,說這個字段是內部div的類(查看調整後的問題) – dougmacklin