Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提高我的jQuery选择器的性能-删除jQuery.find的使用_Javascript_Jquery - Fatal编程技术网

Javascript 提高我的jQuery选择器的性能-删除jQuery.find的使用

Javascript 提高我的jQuery选择器的性能-删除jQuery.find的使用,javascript,jquery,Javascript,Jquery,我有以下代码: $item = $row.find('td[data-id="' + id + '"]'); $row是对表行的jquery引用。有什么方法可以优化此代码吗?我真的不想使用find函数,除非我必须这样做。我想知道我是否可以做一些类似的事情: $item = $($row + 'td[data-id="' + id + '"]'); 但这似乎不起作用。有什么方法可以改进这段代码吗?在我的代码中,这被多次调用,似乎在IE中导致了问题。没有明确使用find 虽然.find()比我建

我有以下代码:

$item = $row.find('td[data-id="' + id + '"]');
$row是对表行的jquery引用。有什么方法可以优化此代码吗?我真的不想使用find函数,除非我必须这样做。我想知道我是否可以做一些类似的事情:

$item = $($row + 'td[data-id="' + id + '"]');
但这似乎不起作用。有什么方法可以改进这段代码吗?在我的代码中,这被多次调用,似乎在IE中导致了问题。

没有明确使用find

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

不显式使用find

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


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

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

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

你可以这样做

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

但是,前者在通过几个
if
s之后实际上会调用后者,因此后者的性能总是优于前者

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

$("table td div")
将找到
div
,然后根据其父项及其父项的父项进行筛选。使用“查找”可以强制选择从左向右求值

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

如果您的
div´多于
表`

,则后者的执行速度会更快。在您的特定情况下,您已经有了第一个选择,并且希望在该结果中搜索

你可以这样做

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

但是,前者在通过几个
if
s之后实际上会调用后者,因此后者的性能总是优于前者

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

$("table td div")
将找到
div
,然后根据其父项及其父项的父项进行筛选。使用“查找”可以强制选择从左向右求值

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

如果您的
div多于
table`

,那么后者的执行速度会更快。我们可以看到它所使用的HTML吗?我原以为使用
.find
比以某种方式组合选择器会更好。如果您只使用一个选择器,它将搜索整个文档,而通过使用
.find
,您将搜索空间限制为仅一行。为什么您认为
.find()
是一个问题?您所说的“似乎导致了问题”是什么意思?我们可以看到它所使用的HTML吗?我原以为使用
.find
比以某种方式组合选择器的效果更好。如果您只使用一个选择器,它将搜索整个文档,而通过使用
.find
,您将搜索空间限制为仅一行。为什么您认为
.find()
是一个问题?你所说的“似乎引起了问题”是什么意思?这不是导致了幕后的
.find()
吗?@nnnnnn是的,这是find速度更快的部分原因。这不是导致幕后的
.find()
吗?@nnnnnn是的,这是find速度更快的部分原因