在元素列表中查找元素的兄弟

Posted

技术标签:

【中文标题】在元素列表中查找元素的兄弟【英文标题】:Find an element's sibling in a list of elements 【发布时间】:2011-04-05 19:48:30 【问题描述】:

好的,这就是我得到的:

我有一个缓存在变量中的元素列表:

elementList = $(".list-of-elements-with-this-class");

我还有一个从该列表中动态生成的元素缓存在另一个变量中:

elementList.click(
    function()
    
        cachedItem = $(this);
    
);

我要做的是在 elementList 中找到 cachedItem,然后在列表中选择 cachedItem 的上一个或下一个兄弟。

所以伪代码应该是这样的:

nextCachedItem = elementList.find(cachedItem).next();

prevCachedItem = elementList.find(cachedItem).prev();

显然,上述方法行不通。 :-)

提前感谢您的帮助!

-蒂姆。

【问题讨论】:

This 可能会有所帮助。 【参考方案1】:

我相信 next()prev() 处理 DOM 元素,而不是查询返回的 jQuery 节点列表。因此,您必须手动处理 jQuery 对象中节点列表的索引。

试试:

// RAW DOM Nodes
elementList.get(elementList.index(cachedItem) - 1); // previous
elementList.get(elementList.index(cachedItem) + 1); // next

或者:

// jQuery Objects/Node list
elementList.eq(elementList.index(cachedItem) - 1); // previous
elementList.eq(elementList.index(cachedItem) + 1); // next

【讨论】:

太棒了!但是,上述内容不断返回构成 elementList 的锚标记的 href 属性。 @scullytr:这可能与您尝试使用它的方式有关……您想对上述操作的结果做什么?例如,如果您只是尝试将其放入警报中,那么这是预期的行为,因为它将使用作为 HREF 值的字符串表示。 我想向生成的兄弟节点及其父节点添加一个类 请记住,这是未包含在 jQuery 对象中的原始 DOM 节点/元素。如果您希望它包含在 jQuery 中,我仍然相信 eq 会比 get 更适合您。 完美!做到了!非常感谢! :-)

以上是关于在元素列表中查找元素的兄弟的主要内容,如果未能解决你的问题,请参考以下文章

jQuery使用:DOM操作之查找兄弟元素和父级元素

用于查找没有兄弟元素的 Xpath

选择除兄弟姐妹和自我之外的所有元素

查找兄弟元素 previousSibling nextSibling

父子兄弟节点查找方法

js中 兄弟元素siblings() 注意点