在IE中,比较表达式的执行速度
$('div.gallery div.product a");
非常相似
$('div.gallery').find("div.product").find("a");
有时第二种变体运行得更快,有时更慢。通常速度差异是2或更大的系数。发生了什么事?
答案 0 :(得分:2)
第一个变体将执行以下操作:
div.product
div.gallery
第二个
.gallery
和标记div
div.product
所以第一个将从右到左搜索元素,而第二个将从左到右搜索它们。
哪个更快取决于您的网站结构,但第一个是推荐方式,因为浏览器以相同的方式匹配CSS选择器。
如果你想提高速度,请确保最右边的选择器尽可能具体。
例如:在这种情况下,您可以为.gallery-link
等锚标签添加一个特殊类,然后您的查询将成为一个简单的a.gallery-link
,在IE中将调用getElementsByTagName
函数然后,他们将按类名过滤它们。请注意,因为您不必遍历DOM树,所以查询变得更快。成本是一个更复杂的标记。对于昂贵的查询,它可能是值得的。