如何使用jQuery选择某个元素的所有子元素(任何级别)和父元素



我有一个元素#xxx,我必须选择该元素的所有子元素(任何级别(和所有父元素。我不想选择元素本身。

到目前为止,我一直在使用这个jquery代码,但我很确定一定有一种方法可以更有效地做到这一点(也许使用addBack(:

$("#xxx").find("*").add($("#xxx").parents())

您是否建议任何其他不使用add()的替代方案,因为我认为这个选择器效率不高,因为它再次在内部查询 #xxx。我认为使用addBack()会更好,因为它不会导致对元素 #xxx 再次搜索。

第一次回答,如果这不是正确的方法,请告诉我。

但这不是对您原始问题的直接回答,而是您在评论中提到的问题:

如果我删除这个选择器并用更简单的东西替换它,滚动会变得非常平滑。

由于您正在重用选择器引用,也许您可以将选择器 $('#xxx'( 存储为变量。由于初始查找是选择器中最繁重的部分。

const $xxx = $('#xxx');
$xxx.find("*").add($xxx.parents())

jQuery选择器与局部变量的性能

最新更新