性能之间是否存在差异:not([attr =“value”])和[attr!=“value”]?

时间:2014-04-13 22:33:38

标签: jquery css3

之间是否存在性能差异
:not([attr="value"])

[attr!="value"]

CSS3 规范是否推荐一种替代方案?

编辑:

CSS3规范不包含[attr!="value"]选择器。这只是jQuery实现的东西。

所以,问题应该是

之间的性能差异
$(':not([attr="value"])')

$('[attr!="value"]')

1 个答案:

答案 0 :(得分:2)

只要有可能,jQuery会尝试使用document.querySelectordocument.querySelectorAll,因为这会使用本机浏览器功能来执行查询。

如果某些内容不符合规范或浏览器不支持,则jQuery需要回退到Swizzle engine,这通常会因为需要遍历DOM本身而变慢。

代码流将是这样的(伪代码):

try {
     document.querySelectorAll(selector);
} catch ( e ) {
     Swizzle.querySelectorAll(selector);
}

因此,对于支持:not([attr="value"])的浏览器,它应该(如果实现得好)比[attr!="value"]更快。

这是否会引起注意取决于用例。