假设我的页面上有很多具有特定类foo
的元素。
所有这些元素都保证在元素ancestor
内。
哪些查询会更快:
$match = $(ancestor).find('.foo')
vs $match = $('.foo')
对于一般查询,我知道第一种选择应该更快,但是当我纯粹基于类查询时,它仍然存在吗?
我的一些困惑也源于阅读人们推荐第一种类型的帐户(至少对于一般查询),但我最近还读到浏览器的本机实现
ancestor.querySelectorAll('.foo')
并不比document.querySelectorAll('.foo')
快 - 原因在于前者是通过调用后者然后过滤掉不属于ancestor
的元素来实现的。
修改
有人指出,我可以自己测试一下。我打算这样做。但是,如果有人可以解释为什么使用jQuery
选择应该从范围界定中获益而querySelectorAll
不是(同样,假设所有匹配元素都在已知的祖先,所以范围不会以任何方式改变结果)