2013-04-24 94 views
1

我已经使用Jquery索引了我的文档index给定了某个索引值,我想'找到'最近的元素与一些class。这不会为我工作:在完整文档中查找最接近的元素

$(variableIndexNumber).closest('.class'); 

的原因是,有时.class改变其位置,这就意味着它可以在文档中的任意位置。有时它是兄弟姐妹,有时是父母,有时候在文件或底部。所以平时selctors nextclosestfirstnextAll等的(因为文档树的)我不工作

我能设法得到最近.class相对于(由变量给出),其他一些因素?

+4

有/是/应该只有*一个*具有该特定ID的元素? – Bergi 2013-04-24 14:26:00

+1

@Bergi不会有很多(类是更好的例子,会改变这个问题..) – Youss 2013-04-24 14:27:07

+0

@Youss不,不能有多个元素具有相同的ID。 – 2013-04-24 14:27:48

回答

2

使用.prevUntil('.class'),.nextUntil('.class'),.parentsUntil('.class'),然后比较它们的大小。

无论哪个具有最小尺寸,在DOM结构方面最接近元素。

UPDATE:在这个过程中,你还需要.andSelf().filter()和典型.next().prev()真正得到你想要的目标。演示已更新。你可以看到现在的代码更通用。

您可能还需要一个排序功能,就像我在下面的概念验证中所做的那样。

DEMOhttp://jsfiddle.net/terryyounghk/FzA78/

侧面说明:有没有.childrenUntil(),因为这是分支向外DOM树,而不是向内朝文档根目录中,如果你想知道。但我的猜测是,你可以先做一个$('.me').find('.class'),然后对他们每个人做一个.parentsUntil('.me'),然后比较大小。我不确定这是否会起作用。

+0

声音有前途的谢谢:) – Youss 2013-04-24 14:34:58

+0

作出更正,应该'.parentsUntil()',而不是'.parents()' – 2013-04-24 14:35:58

+0

将接受,如果没有别的出现 – Youss 2013-04-24 14:49:20