0

我有这个代码:

$item = $row.find('td[data-id="' + id + '"]');

$row 是对表行的 jquery 引用。有什么办法可以优化这段代码吗?除非必须,否则我真的不想使用 find 功能。我想知道我是否可以做类似的事情:

$item = $($row + 'td[data-id="' + id + '"]');

但这似乎不起作用。有什么方法可以改进这段代码吗?在我的代码中,这被多次调用,似乎在 IE 中引起了问题。

4

3 回答 3

4

没有明确使用 find

$item = $('td[data-id="' + id + '"]',$row);

虽然.find()比我建议的要快

在此处输入图像描述

于 2013-06-13T10:58:34.660 回答
1

这是一小段代码,可以尝试和优化。你说它被调用了很多次。您应该考虑进行一次调用以提取所需的所有单元格,然后对生成的集合进行操作。一些 HTML 将有助于查看这是否真的可行。

于 2013-06-13T11:04:42.353 回答
0

在您的特定情况下,您已经有了第一个选择并希望在该结果中进行搜索

你可以做

//passing the $row as the context for the selection
$("'td[data-id="' + id + '"]'",row); 

或者

$row.find('td[data-id="' + id + '"]')

然而,前者实际上会在经过几个ifs 后调用后者,所以后者总是会优于前者

在性能方面,使用.find()通常是一件好事。在复合选择器中

$("table td div")

's 被找到,然后div根据他们的父母和他们父母的父母进行过滤。使用 find 您可以强制选择从左到右进行评估

$("table").find("td").find("div")

div´'s than假设您有更多表,后者将执行得更快

于 2013-06-13T11:32:58.147 回答