我想知道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