Jquery选择器,我应该指定html标签的类型吗?

时间:2011-01-04 18:11:12

标签: javascript jquery html internet-explorer-8 performance

我有很多带有class ='class1'的html标签。它们都恰好是/并且始终是相同类型的元素。例如输入元素。

之间是否存在性能差异?
$("input.class1")

$(".class1")

谢谢!

注意:在这种情况下,我需要专门针对IE8的信息,但是提到跨浏览器解决方案很重要,我的客户只能使用IE8,因此最佳答案将为IE8提供最佳答案。

3 个答案:

答案 0 :(得分:5)

是的,有性能差异。后者允许选择器引擎使用大多数主流浏览器中存在的原生getElementsByClassName方法,并且在不支持该方法的浏览器中应该稍快一些 querySelectorAll 。前者在支持querySelectorAll但不支持getElementsByClassName的浏览器中会更快(这几乎只是IE 8),但对于您的情况,可能仍然不如后者快。

对于您的方案,请使用$(".class1")

答案 1 :(得分:1)

我不确定,但我猜有区别。

使用示例#1,只有要通过给定className获取元素的输入元素,这应该比步行所有元素节点(比如示例#2)快(多?)

还应该依赖于浏览器版本,我认为jQuery也会使用像getElementsByClassName()或querySelectorAll()这样的东西。

答案 2 :(得分:0)

是的,包括元素名称将为您带来性能优势,因为(对于那些本身或不支持getElementsByClassName的浏览器),这允许浏览器首先使用标准方法{{}削减文档。 1}},然后只搜索那些类。