【问题标题】:jQuery : which is faster in this case (.find) vs (.filter) [closed]jQuery:在这种情况下(.find)vs(.filter)更快[关闭]
【发布时间】:2013-06-09 19:53:23
【问题描述】:

我有一张大桌子,里面有很多行 (50-200) 和列 (30)。所以我总共有至少 1500 个细胞。我想知道以下哪些指令更快,为什么?

//assuming we have some predefined variable
var table = $('#myTable');
var allCells = table.find('td');

如果选定的单元格有一个类selected

selectedCells = table.find('td.selected');

selectedCells = allCells.filter('.selected');

或者考虑到您有 1500 个要循环的单元格,是否有更好的原生 javascript 方式(在性能和可读性方面)来查找选定的单元格?

【问题讨论】:

标签: jquery performance jquery-selectors css-selectors


【解决方案1】:

find() 这里会更快,因为您的filter() 方法无论如何都依赖于find()。从您的代码:

var allCells = table.find('td');

selectedCells = allCells.filter('.selected');

table.find('td.selected'); 仅提取具有selected 类的td 元素。

table.find('td').filter('.selected') 拉出所有 td 元素,然后仅过滤具有selected 类的元素。

【讨论】:

  • 为什么.filter依赖.find
  • @FelixKling 没有。过滤器依赖于一组预先选择的对象。在这种情况下,这些对象是使用find() 选择的。 “将匹配元素集减少为匹配选择器或通过函数测试的元素。” api.jquery.com/filter
  • 好的,所以你的意思只是在这种情况下,OP 在.filter 之前执行.find (虽然这很容易被误解,我想我在“你的filter()”中错过了“你的”方法”)。我假设 OP 无论如何都会始终执行var allCells = table.find('td');,因此使用.filter 比使用.find 再次搜索单元格要好。但谁知道:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 2015-01-09
  • 2019-01-15
相关资源
最近更新 更多