我有一个元素#xxx
,我必须选择该元素的所有子元素(任何级别(和所有父元素。我不想选择元素本身。
到目前为止,我一直在使用这个jquery代码,但我很确定一定有一种方法可以更有效地做到这一点(也许使用addBack(:
$("#xxx").find("*").add($("#xxx").parents())
您是否建议任何其他不使用add()
的替代方案,因为我认为这个选择器效率不高,因为它再次在内部查询 #xxx。我认为使用addBack()
会更好,因为它不会导致对元素 #xxx 再次搜索。
第一次回答,如果这不是正确的方法,请告诉我。
但这不是对您原始问题的直接回答,而是您在评论中提到的问题:
如果我删除这个选择器并用更简单的东西替换它,滚动会变得非常平滑。
由于您正在重用选择器引用,也许您可以将选择器 $('#xxx'( 存储为变量。由于初始查找是选择器中最繁重的部分。
const $xxx = $('#xxx');
$xxx.find("*").add($xxx.parents())
jQuery选择器与局部变量的性能