jQuery:在这种情况下(.find)vs(.filter)更快[关闭]
Posted
技术标签:
【中文标题】jQuery:在这种情况下(.find)vs(.filter)更快[关闭]【英文标题】:jQuery : which is faster in this case (.find) vs (.filter) [closed] 【发布时间】: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 方式(在性能和可读性方面)来查找选定的单元格?
【问题讨论】:
自己试试吧:jsperf.com. @FelixKling 我不知道怎么用,你能帮我做吗? 查看现有测试,例如jsperf.com/jquery-selector-vs-standard-selector. jsperf.com/find-v-filter jsperf.com/find-v-filter/2,其中包括第三种情况:var selectedCells = table.find('td').filter('.selected');
【参考方案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
再次搜索单元格要好。但谁知道:)以上是关于jQuery:在这种情况下(.find)vs(.filter)更快[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
jQuery & Django:在这种情况下如何正确使用 jquery
jQuery和Django:在这种情况下如何正确使用jquery
std::string::find 总是返回 string::npos 甚至