javascript - 哪个更有效率 - $ ('selector' ).last() 或 $ ('selector:last' )?

标签 javascript jquery

我有一个包含大量子元素(1000 多个)的父元素。我正在寻找最快的方法来获取最后一个子元素的句柄。我发现的选项是:

$('.parent .child').last()

$('.parent .child:last')

对于跨浏览器哪个可靠地更快有什么意见吗?

编辑

我在 jsfiddle 中编写了一个测试来衡量这一点,结果发现差异几乎可以忽略不计。尽管 .last() 表现更好,但差异可以忽略不计。所以我认为即使使用 :last 选择器,它实际上也是在获取整个元素列表然后返回最后一个元素?难以置信。

fiddle : http://jsfiddle.net/techfoobar/GFb9f/8/

最佳答案

许多现代浏览器都支持 document.querySelectorAll(),因此 $('.parent .child').last() 应该更快,因为选择器字符串可以按原样传递,然后弹出最后一个匹配项。

在后者中,:last 不是标准的伪选择器,Sizzle 必须开始对选择器字符串进行分块以开始匹配。

但总的来说,我会使用您认为最易读的内容。要开始对此进行优化,首先确保您的应用程序存在性能问题,并且您已将此选择器确定为瓶颈。

关于javascript - 哪个更有效率 - $ ('selector' ).last() 或 $ ('selector:last' )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12209350/

相关文章:

javascript - 使用带有可选参数的回调

javascript - 如何使用 jQuery 循环 3 个 div

javascript - data-..attributes 没有在我的 html Bootstrap 代码中突出显示

javascript - 如何过滤表格,在json数据中找到匹配的条目并添加相应的链接

php - 是否可以访问 iframe 之外的 html(从 iframe)?

jquery - 为什么 jQuery DataTables 国际化 i18n 对我不起作用?

javascript - 为什么Meteor把js全部放在开头呢?

javascript - 四舍五入到最接近的 5 的倍数

javascript - AngularJS 无法从服务加载数据

jquery - 如何将标签转换为文本框?