随着越来越多浏览器实现了document.querySelectorAll(),
选择器的重担从 jQuery 转移了给浏览器,其优化已经没有以前那么重要了。
不过,有些 tips 还是需要紧记的。
选择器以 ID 开始总是最好的。
// 快
$('#container div.robotarm');
// 非常快
$('#container').find('div.robotarm');
使用 $.fn.find 的方式会更快是因为在第一步里只有 ID,
根本没用到快速选择器引擎,而是使用了浏览器内置的极速的
document.getElementById()。
选择器的右侧部分应该尽可能具体,左侧则不需要那么具体。
// 未优化的
$('div.data .gonzalez');
// 优化过的
$('.data td.gonzalez');
如果可以,尽量在选择器靠右侧的部分使用 tag.class,
而左侧只有 tag 或者只有 .class。
避免过度的具体
$('.data table.attendees td.gonzalez');
// 如果可以不写中间的部分会更好
$('.data td.gonzalez');
清爽的 DOM 结构也有助于改善选择器的性能, 选择器引擎可以少跑几层去寻觅那个元素了。
Copyright Rebecca Murphey, released under the Creative Commons Attribution-Share Alike 3.0 United States license.