当前位置:  开发笔记 > 编程语言 > 正文

在JavaScript或Jquery中测试祖先/后代关系的对象

如何解决《在JavaScript或Jquery中测试祖先/后代关系的对象》经验,为你挑选了2个好方法。

我试图想出一个可重用的JS或jQuery函数,它允许我测试一个对象是否是另一个对象的DOM后代.

我见过一个测试模型

$b.parents('nodename').length>0

当您只需要通过该名称检查元素是否是任何节点的子元素时,这非常棒.

但是特定节点怎么样?你无法测试

$b.parents($a).length>0

因为jQuery父类将一个节点表达式作为参数进行过滤.

作为一个小背景,我试图测试文档点击事件的目标是否是特定对象的子项.例如,如果event.target是$ b的子节点,则返回true,否则返回false.但是这个功能可能会在以后产生其他影响.

谢谢!



1> Alexey Lebed..:
a.contains(b)

这是一个使用Node.contains的纯JavaScript解决方案.该函数包含在内,a.contains(a)计算结果为true.

IE9中有一个边缘情况:如果b是文本节点,contains则总是返回false.


这很棒!这个对我有用.我总是喜欢纯粹的JS而不是框架.

2> Gareth..:

在我建议的jQuery祖先使用jQuery对象

if ($(obj1).parents().index($(obj2)) >= 0) {
    // obj1 is a descendant of obj2
}


您可以将一个展开的DOM元素传递给索引,因此可以简化为if($(obj1).parents().index(obj2)> = 0)
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有