问题标签 [ancestor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
909 浏览

javascript - 查找与(不仅包含在)上下文相关的最接近的父级

使用以下html

我将外部 ul 存储在变量中

在一般情况下,我只是传递了 DOM 元素,不一定指定选择器

单击 h3 时,我想获取包含它的顶级 li 。在一般情况下,在手风琴 ul 和我要获取的元素之间,以及要获取的元素和 h3 之间可能有任何类型的标记......但我将拥有一个选择器,它可以让我到达元素从使用“>”选择器的手风琴。

例如 var items = $(">li", acc);

麻烦的是,当我从单击的 h3(单击处理程序中的“this”)开始时,很难找到特定的项目。

返回一个空的 jQuery(可能是一个错误?尽管在这种情况下很难定义“>”的含义,其中顶级元素是动态的)

不允许设置上下文,因此可能会返回太多元素

有没有办法做我想做的事?

*编辑:html现在使问题更清晰

0 投票
1 回答
443 浏览

silverlight - 访问 DataTemplate 属性

我有一个带有自定义 ItemTemplate 的 TabControl(用于 TabItem)。

我想隐藏最后一个选项卡项,如果我可以绑定到 TabItem 的 Visibility 属性,这将是可能的。

有什么建议么?

0 投票
2 回答
2471 浏览

xml - 获取没有特定祖先 xml xpath 的节点

我在非常复杂的 xpath 上苦苦挣扎了几天,但我无法制定它。我有一个来自 c++ 的语法树,比如语言解析器,我想要一个 xpath 查询,它选择所有不在函数名中的名称。

具体来说,我有这样的xml文档

(整个xml文档在问题的最后,它很大,我在这里粘贴文档结构的简单概述)有四种节点类型
a - 此元素包含一个节点
b - 包含节点的信息(例如“CALL_EXPRESSION ")
c - 包含实际文本(例如“printf”、变量名...)
d - 包含当前节点的后代(a 元素)

我想制定 Xpath 查询,它将选择所有不是 CALL_EXPRESSION/*[1] 后代的名称。(这意味着我想选择所有变量而不是函数名称)。

要选择所有函数名称,我可以像这样使用 Xpath

//a[b="CALL_EXPRESSION"]/d/a[1]

这里没问题。现在,如果我想选择不是该节点后代的所有节点。我会使用 not(ancestor::X)。

但是问题来了,如果我像这样制定 Xpath 表达式:

//*[b="NAME"][not(ancestor::a[b="CALL_EXPRESSION"]/d/a[1])]

它只选择根本没有子 b="CALL_EXPRESSION" 的节点。在我们的示例中,它仅从 ASSIGNMENT_EXPRESSION 子树中选择 NAME。

我怀疑问题在于,祖先:: 仅采用第一个元素(在我们的例子中为 a[b="CALL_EXPRESSION"])并根据其谓词进行限制,并进一步 / 被丢弃。所以我修改了这样的xpath查询:

//*[b="NAME"][not(ancestor::a[../../b="CALL_EXPRESSION" and position()=1])]

这似乎只适用于更简单的 CALL_EXPRESSION(没有 DOT_EXPRESSION)。我怀疑,[] 中的路径可能仅与当前节点相关,而不与潜在祖先相关。但是当我使用查询时

//*[b="NAME"][not(ancestor::a[b="CALL_EXPRESSION"])]

它按照人们的假设工作(选择了所有没有祖先 CALL_EXPRESSION 的名称)。

有什么方法可以制定我需要的查询吗?为什么查询不起作用?

提前致谢 :)

XML

0 投票
1 回答
2548 浏览

xml - 获取没有特定祖先 xml xpath 的节点

我想要 xpath,它获取没有祖先的节点,它是特定节点的第一个后代。

假设我们有这样的 xml 文档:

我想选择文档中没有作为其祖先节点//a/c/a[1] 的所有 b 节点。

0 投票
1 回答
323 浏览

jquery - jQuery 包含 | 仅针对第一个祖先

在这个例子中,我试图在一个包含许多测试表的 HTML 页面中定位并最终设置一个字符串的样式。

例如 HTML 页面:

我使用的 jquery 脚本:

这样做,但我看到所有的 td 都被选中了。我怎样才能得到第一个 td,没有所有的祖先? DOM 树?(只有这个)

谢谢社区

0 投票
1 回答
1820 浏览

graph - 找到两个叶节点的最佳共同祖先,其中节点有零个、一个或两个父节点

目标

我正在寻找一种算法来找到图的最佳共同祖先,其中图中的节点可以有零个、一个或两个父节点。我不确定“最佳共同祖先”的术语:更好的术语可能是“最低共同祖先”或“最近的共同祖先”等。如果有更好的术语,请提供描述此类的 URL。

该算法可以访问完整的图形数据结构。

给定节点可能有零个、一个或两个父节点。这是关键,因为我在网上看到的算法假定给定节点有零个或一个父节点,但没有两个父节点(请参阅下面的参考资料)。例如,下图中的 m1 节点的父节点为零,因为它是根(图可以有多个根)。d3有两个父母,一个是d2,另一个是b2。

如果节点存在,则节点对双亲都有引用,如果存在,则对所有子节点都有引用,因此向上遍历树和向下遍历树是公平的游戏。节点可以有零个或多个子节点。更改数据结构不是一种选择。

更靠近两个输入节点的节点比更远的节点(即更靠近图的根)更可取。

例如,下面给出的图表显示了一个可能的图表。在这种情况下,算法的输入将是节点 b5 和 d4。节点 b5 和 d4 的最佳共同祖先是 b2。c2 不会是因为 b3 在通向 b5 的血统中。

该算法的可能答案最多只能是一个节点,在两个输入节点没有共同祖先的情况下,空集是一个有效答案。

参考资料

Tarjan 的离线最小共同祖先算法似乎暗示零个或一个父母,所以如果这是解决方案,那么答案应该包括在该算法中如何考虑两个父母的描述。最低共同祖先的维基百科页面似乎也只考虑了节点有零个或一个父节点的数据结构,而不是两个:

在每个节点都指向其父节点的树数据结构中,...

图表

0 投票
1 回答
300 浏览

python - App Engine 数据存储中的祖先

我一直在为 Google App Engine 开发一段时间。我注意到但还没有机会使用的功能之一是数据存储中的“祖先”。

什么是有用的情况示例?

0 投票
2 回答
33 浏览

jquery-selectors - 如何影响具有特定后代的jQuery中的祖先?

我有这两个具有相同类名()的DIV:



我想对包含 2 的边框应用蓝色的 CSS 边框,对包含 B 的边框应用红色边框。

我尝试使用 parentsUntil(),但对所有祖先应用了边框,直到 class="myOutterDiv"。我只想影响 class="myOutterDiv"。

谢谢!

0 投票
2 回答
322 浏览

actionscript-3 - 获取 Action Script 3 中对象的祖先类列表的简单方法?

我想检查对象是否有一个 DisplayObject 作为它的祖先之一,如果有,则对其执行一些操作。有什么快速简单的方法来做到这一点?

0 投票
3 回答
556 浏览

javascript - 将祖先选择器添加到此 javascript

有没有一种简单的方法可以添加一些关于将祖先li标签设置为 .active 的内容?