You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在已获取的jQuery匹配元素集合上正确使用find()方法检索目标元素

问题核心原因

jQuery的find()方法的作用是查找集合中所有元素的后代子节点,你要匹配的目标元素本身就是scrollItems集合中的成员,并非这些元素的后代,因此用find()检索不到结果。

正确实现方式

你可以用.filter()方法直接对当前scrollItems集合做筛选,这是最符合需求的写法:

scrollItems.removeClass('stick');
scrollItems.filter('#' + id).addClass('stick');

.filter()的作用就是过滤当前jQuery集合中的元素,仅保留符合指定选择器的元素,正好匹配你在已有集合中定位目标元素的需求。

之前写法的误区说明

  1. 第二种传入第二个上下文参数的逻辑本身是成立的,但你多调用了一次多余的find(),修正后也可以生效:
// 修正后可运行,但不如filter写法直观高效
$('#' + id, scrollItems).addClass('stick');
  1. 因为id在整个DOM中是唯一的,全局查询$('#'+id)本身性能损耗极低,如果你没有特殊的性能要求,原来的写法也完全可以正常使用。

内容的提问来源于stack exchange,提问作者Brian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:39:01