我想知道DOM元素a是否包含DOM元素b(也就是說,如果a是DOM樹中的祖先)。因此,類似於:jquery'包含'DOM元素而不是選擇器
$(b).closest(a);
但是其中'a'是此處的DOM節點,而不是選擇器。
jQuery可以幫助嗎?我可以找到的所有有用的函數都使用選擇器字符串而不是元素,如果您的DOM元素是匿名的,這些功能並沒有什麼幫助。
我想知道DOM元素a是否包含DOM元素b(也就是說,如果a是DOM樹中的祖先)。因此,類似於:jquery'包含'DOM元素而不是選擇器
$(b).closest(a);
但是其中'a'是此處的DOM節點,而不是選擇器。
jQuery可以幫助嗎?我可以找到的所有有用的函數都使用選擇器字符串而不是元素,如果您的DOM元素是匿名的,這些功能並沒有什麼幫助。
啊哈,我搜索悲慘地失敗了,但一個同事找到了答案已經在周圍,但Testing objects for ancestor/descendent relationship in JavaScript or Jquery這個問題是問在這樣一個不同的方式,我沒有找到它:
if ($(obj1).parents().index(obj2) >= 0) {
// obj1 is a descendant of obj2
}
仍不如儘管我期待的效率很高,('找到所有的父母,然後檢查一場比賽'與'加緊尋找比賽的樹')。
還有 http://plugins.jquery.com/project/ancestry,它提供了我正在談論的功能。
更新:
if($(obj1).parents.eq(obj2)) { ...
也適用,並且稍微整潔。父母名單不會那麼長,所以這應該是相當有效的。
jQuery find()方法更適合於此目的。 – Technowise 2009-11-23 11:52:44
「$(parent).find(」...呃,什麼?如果你有什麼是一個未命名的DOM節點,那麼你不能將它需要的選擇器作爲參數,除非我錯過了某些東西。 – ijw 2009-11-23 11:56:47
以下是Traversing的文檔。我建議你使用:
在當前版本的jQuery,'最接近()'[不接受](http://api.jquery.com/closest/)DOM節點作爲參數。 – thorn 2013-05-22 07:47:55