我有这个代码:
$item = $row.find('td[data-id="' + id + '"]');
$row 是对表行的 jquery 引用。有什么办法可以优化这段代码吗?除非必须,否则我真的不想使用 find 功能。我想知道我是否可以做类似的事情:
$item = $($row + 'td[data-id="' + id + '"]');
但这似乎不起作用。有什么方法可以改进这段代码吗?在我的代码中,这被多次调用,似乎在 IE 中引起了问题。
我有这个代码:
$item = $row.find('td[data-id="' + id + '"]');
$row 是对表行的 jquery 引用。有什么办法可以优化这段代码吗?除非必须,否则我真的不想使用 find 功能。我想知道我是否可以做类似的事情:
$item = $($row + 'td[data-id="' + id + '"]');
但这似乎不起作用。有什么方法可以改进这段代码吗?在我的代码中,这被多次调用,似乎在 IE 中引起了问题。
没有明确使用 find
$item = $('td[data-id="' + id + '"]',$row);
虽然.find()
比我建议的要快
这是一小段代码,可以尝试和优化。你说它被调用了很多次。您应该考虑进行一次调用以提取所需的所有单元格,然后对生成的集合进行操作。一些 HTML 将有助于查看这是否真的可行。
在您的特定情况下,您已经有了第一个选择并希望在该结果中进行搜索
你可以做
//passing the $row as the context for the selection
$("'td[data-id="' + id + '"]'",row);
或者
$row.find('td[data-id="' + id + '"]')
然而,前者实际上会在经过几个if
s 后调用后者,所以后者总是会优于前者
在性能方面,使用.find()
通常是一件好事。在复合选择器中
$("table td div")
's 被找到,然后div
根据他们的父母和他们父母的父母进行过滤。使用 find 您可以强制选择从左到右进行评估
$("table").find("td").find("div")
div´'s than
假设您有更多表,后者将执行得更快