【发布时间】:2016-01-21 12:22:16
【问题描述】:
Learn jQuery 说:
在选择器的右侧要具体,不要具体 在左边。
// Unoptimized: $( "div.data .gonzalez" ); // Optimized: $( ".data td.gonzalez" );
我了解左侧的部分,但是要具体说明右侧尺寸的部分呢?这在现代浏览器上有多真实?据我所知,现代浏览器不使用 Sizzle 引擎。让我们修改我们的“未优化”示例,通过删除div,在右侧包含我们需要“特定”的事实:
// Unoptimized modification:
$( ".data .gonzalez" );
对于我们的“优化”示例(对于现代浏览器):
- 已调用
queryselectorall.data - 在步骤 1 的结果集中将
getElementsByTagName放在td上。 - 从步骤 2 的结果集中为
.gonzales调用queryselectorall
对比我们的“未优化修改”示例:
- 已调用
queryselectorall.data - 从 1 的结果步骤中为
.gonzales调用queryselectorall
基本上,我们跳过了第 2 步。所以不会:
$( ".data .gonzalez" );
跑得比:
$( ".data td.gonzalez" );
让“特定于选择器右侧大小”的原则在现代浏览器中已过时?
【问题讨论】:
-
getElementsByClassName比querySelectorAll快(很多)对于简单的类:jsperf.com/getelementsbyclassname-vs-queryselectorall/18 -
@CodeiSir 是的,但这不是重点。问题是为什么你必须在右手边具体说明?为什么不直接删除
td选择器。 -
@Cristy 这只是一个评论,而不是一个答案;)我想添加一些信息,因为在我看来他不知道
getElementsByClassName选择器
标签: jquery