我有很多带有class ='class1'的html标签。它们都恰好是/并且始终是相同类型的元素。例如输入元素。
之间是否存在性能差异?
$("input.class1")
和
$(".class1")
谢谢!
注意:在这种情况下,我需要专门针对IE8的信息,但是提到跨浏览器解决方案很重要,我的客户只能使用IE8,因此最佳答案将为IE8提供最佳答案。
答案 0 :(得分:5)
是的,有性能差异。后者允许选择器引擎使用大多数主流浏览器中存在的原生getElementsByClassName
方法,并且在不支持该方法的浏览器中应该稍快一些或 querySelectorAll
。前者在支持querySelectorAll
但不支持getElementsByClassName
的浏览器中会更快(这几乎只是IE 8),但对于您的情况,可能仍然不如后者快。
对于您的方案,请使用$(".class1")
。
答案 1 :(得分:1)
我不确定,但我猜有区别。
使用示例#1,只有要通过给定className获取元素的输入元素,这应该比步行所有元素节点(比如示例#2)快(多?)
还应该依赖于浏览器版本,我认为jQuery也会使用像getElementsByClassName()或querySelectorAll()这样的东西。
答案 2 :(得分:0)
是的,包括元素名称将为您带来性能优势,因为(对于那些本身或不支持getElementsByClassName
的浏览器),这允许浏览器首先使用标准方法{{}削减文档。 1}},然后只搜索那些类。