这更多是一个好奇的问题。当进行以下操作时:
$('.selector1, .selector2').doSomething()
jQuery是否需要完全遍历DOM两次来获取与每个选择器匹配的对象集,还是它在一次DOM遍历中找到所有元素?
这更多是一个好奇的问题。当进行以下操作时:
$('.selector1, .selector2').doSomething()
我认为它使用本地浏览器功能来查找,使用:
document.getElementsByClassName()
这真的取决于浏览器。在较新的浏览器中,它将使用document.querySelectorAll进行任何DOM查询(在幕后,这将调用document.getElementsByClassName来获取类)。在不支持此功能的旧浏览器中,它必须自己解决,这显然会更慢。
一般来说,您应该首先通过id查找内容(或至少缩小范围)。速度方面,类和标记名称将是下一个选择。基本上,最好使用本地支持的DOM操作。
<selector2>
节点 :) - KARASZI István