.find() 比基本后代选择方法更快吗?

发布于 2024-09-13 16:15:21 字数 227 浏览 14 评论 0原文

Paul Irish 的博客中的幻灯片 30 提到:

$('#container').find( 'div.robotarm')$('#container div.robotarm') 更快

这是真的吗?

Slide 30 in Paul Irish's blog mentioned:

$('#container').find('div.robotarm') is faster than $('#container div.robotarm')

Is this true?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷乱花海 2024-09-20 16:15:21

也许在 jQuery 的早期版本中就是这种情况。但是,该表达式

$('#container div.robotarm')

通过 jQuery 标准化为

$('#container').find('div.robotarm')

So $('#container div.robotarm') 应该较慢的唯一原因是函数调用开销。但是,这确实是一个微不足道的差异。

如果该调用未标准化,则将使用 sizzle (Resigs css 选择器引擎)来查找该元素(从右到左)。那当然会慢很多。

Maybe in an earlier version of jQuery that was the case. However, the expression

$('#container div.robotarm')

is normalized through jQuery into

$('#container').find('div.robotarm')

So the only reason why $('#container div.robotarm') should be slower is because of function call overhead. But, that would really be a trivial difference.

If that call wasn't normalized, sizzle (Resigs css selector engine) would be used to lookup that element (right to left). That of course would be much slower.

居里长安 2024-09-20 16:15:21

既然你征求了意见,那就无所谓了。

您总是可以想到这样一种情况:在某种浏览器中,在某种 DOM 配置下,一个浏览器的运行速度比另一个快。无需吹毛求疵。

Since you asked for opinion, it doesn't matter.

You can always come up with a case where one runs faster than the other in some browser under a certain configuration of the DOM. No need to split hairs.

丿*梦醉红颜 2024-09-20 16:15:21

仅当通过 ID 搜索时这才是正确的。

但是,当我们按标签名称搜索时,它在现代浏览器中返回不同的结果,其中 $('div').find('p')$('div p') 慢code> 因为后者使用 querySelector()

This is only correct when searching by ID.

But when we search by tag name it returns different results in modern browsers where $('div').find('p') is slower than $('div p') because the latter uses querySelector().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文