0

哪个性能更好?

$('input[data-confirm],a[data-confirm],button[data-confirm]');

或者

$('[data-confirm]');

显然$('[data-confirm]')选择器的版本更加灵活,这是否意味着 jQuery 必须扫描页面中的每个元素以查看它是否具有 data-confirm 属性。我会更好地使用一个类吗?我喜欢使用,data-confirm因为我可以把它放在值中。

<input type="submit" data-confirm="Are you sure you want to do this sir?" />
4

4 回答 4

3

为什么不使用一个类 AND data-confirm,这将允许您具体并使用该data-confirm属性来精确定位您想要的确切元素,而无需让 jquery 浏览其他所有内容。这将确保无论使用哪种浏览器,您的定位都能更快地工作。id如果你使用一个而不是一个类,你可能会再次减少几纳秒。

于 2012-09-13T00:27:40.210 回答
1

基于http://www.componenthouse.com/article-19使用元素选择器比单独使用属性选择器要快得多(这里有一个关于选择器性能的很好的讨论提高 jQuery 选择器性能的好方法?)。

就我个人而言,我会首先使用属性选择器,就像您说的那样它更灵活,如果您遇到性能问题,您可以适当地审查这个选择。

于 2012-09-13T00:30:41.300 回答
1

正如@Guffa 所说,这真的取决于浏览器。使用 Chrome 21.0.1180.89 进行测试,属性 equals 选择器快:

这是 jsperf:http: //jsperf.com/attrvstag

于 2012-09-13T00:32:57.137 回答
0

这取决于浏览器支持什么。如果选择器可以交给浏览器进行评估,那么任何一个都足够快。

如果没有,第一个会更快,因为内置了查找元素的函数,可以被 Sizzle 引擎使用。对于第二个,它必须遍历文档中的所有元素。

于 2012-09-13T00:29:09.077 回答