2012-05-04 45 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个),而您可以拥有多个主类。