2012-05-04 42 views
1

我在DOM中有這個元素:<div id="main" class="main"></div>。用$('#main')和$('。main:first')選擇元素有沒有區別?jQuery選擇器差異

編輯: 忘了提及這是假設這個元素是類名爲「main」的唯一元素。

回答

3

編輯:忘了提及這是假設這個元素是類名「main」的唯一元素。

沒有任何區別,因爲只有一個.main$('#main')$('.main')所以選擇將返回你相同的結果。

在性能方面存在,但您可以忽略它,除非您使用高保真動畫或巨大的DOM操作。

$('#main') - 更快,更整潔,高效

$('.main:first') - 類選擇較慢相比ID選擇並:first濾波器是緩慢的。

- >您不需要:first,只需$('.main')將返回您想要的結果。

其他選項 -

$('.main') - 比ID選擇慢

$('div.main') - 比ID選擇仍然比較慢不僅僅是$(」主)

證明更好 - http://jsperf.com/jquery-class-vs-id-v2

+0

類選擇器非常快。 – BoltClock

+0

@BoltClock是的,但速度不如ID選擇器http://jsperf.com/jquery-class-vs-id-v2 –

1

是的。如果該元素不是類main的第一個元素,則不會被選中。

1

$(「#main」)可能會更快一些,因爲它使用了ID。另外,如果您在原始類之前添加了.main類的另一個元素,那麼它會失敗。

0

ID選擇器更強大,因爲jQuery遍歷DOM ID應該是唯一的(每個視圖只有1個),而您可以擁有多個主類。