jQuery data- * vs class selector - 性能?

时间:2013-01-21 08:59:28

标签: javascript jquery jquery-selectors performance-testing

我见过许多例子(包括最喜欢的Twitter的引导程序),其中各种API使用$("[data-something]")而不是按类$(".something")选择

尽管如此,我试图找到有关这两种不同选择器之间性能的信息。令我感到惊讶的是,许多性能测试确实发现这些选择器在大多数现代浏览器上同样快,所以我决定my own test

我现在真的很困惑,我不知道我的测试是否做错了(不知何故?)还是我之前检查过的其他测试?

如果我在测试时做错了,或者这些测试是否正确,并且数据属性选择器实际上比常规慢得多,那么是否可以提供更多信息?选择?

谢谢

1 个答案:

答案 0 :(得分:4)

使用属性选择器时,性能可能会有所不同,具体取决于浏览器中的querySelector支持。 jQuery将回归到一个内置的库(称为SizzleJS),这个库要慢得多。

对类名的选择会更快,因为它总是使用所有常见浏览器通常支持的getElementsByClassName。

我看到它的方式,类与数据属性的用途不同。类将“分类”元素,以便可以正确设置样式并创建结构。

数据属性就是:数据。有时您需要在元素中存储其他数据。例如:

<table>
    <tr data-id="4" data-category="1">
        <td>Name</td>
        <td>Email</td>
    </tr>
</table>

请注意,由于同样的原因,我没有使用常规的“id”属性。