2013-04-24 63 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