标签: ancestor

Jquery:获得祖先(或后代)和自我

可以使用matchedset.find(selector)/ matchedset.parents(selector)来获取由选择器过滤的当前匹配集的后代/祖先,但是不包括匹配集本身(如果它恰好也匹配选择器).是否有更好的(更简洁和/或更快)的方式来获得它

matchedset.find(selector).add(matchedset.filter(selector))
Run Code Online (Sandbox Code Playgroud)

和父母的相应()?

jquery filter ancestor descendant

34
推荐指数
2
解决办法
9536
查看次数

jQuery选择祖先

有可能使用jQuery来选择元素的祖先吗?

标记:

<div id="ancestor-1">
    <div>
        <a href="#" class="click-me">Click me</a>
    </div>
</div>
<div id="ancestor-2">
    <div>
        <a href="#" class="click-me">Click me</a>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

脚本:

$(".click-me").click(function(){
    // var ancestorId = ???;
    alert(ancestorId)
});
Run Code Online (Sandbox Code Playgroud)

jquery ancestor jquery-selectors

30
推荐指数
3
解决办法
2万
查看次数

通过预处理检查O(1)中是否有2个树节点相关(祖先/后代)

检查2个树节点是否相关(即祖先 - 后代)

  • 在O(1)时间内解决它,使用O(N)空间(N =节点数)
  • 允许预处理

而已.我将在下面讨论我的解决方案(方法).如果你想先考虑自己,请停止.


对于预处理,我决定做一个预订(先递归遍历root,然后是子),并给每个节点一个标签.

让我详细解释标签.每个标签将由逗号分隔的自然数组成,如"1,2,1,4,5" - 此序列的长度等于(节点的深度+ 1).例如,根的标签是"1",root的子节点将具有标签"1,1","1,2","1,3"等.下一级节点将具有类似"1,1,1"的标签. ","1,1,2",......,"1,2,1","1,2,2",......

假设节点的" 订单号 "是其父节点的子节点列表中的"该节点的从1开始的索引 ".

通用规则:节点的标签由其父标签后跟逗号和节点的" 订单号 "组成.

因此,为了回答O(1)中两个节点是否相关(即祖先 - 后代),我将检查其中一个节点的标签是否是另一个标签的" 前缀 ".虽然我不确定这些标签是否可以被认为占据O(N)空间.

预计会有任何批评者或其他方法.

algorithm tree time-complexity ancestor preorder

11
推荐指数
1
解决办法
4882
查看次数

Nokogiri相当于jQuery nearest()方法,用于在树中查找第一个匹配的祖先

jQuery有一个可爱的,有点错误的名为nearest()的方法,它在DOM树中寻找匹配的元素.例如,如果我有这个HTML:

<table src="foo">
  <tr>
    <td>Yay</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

假设element设置为<td>,那么我可以src像这样计算值:

element.closest('table')['src']
Run Code Online (Sandbox Code Playgroud)

如果缺少表元素或其src属性,那将彻底返回"undefined".

在Javascriptland中习惯了这个,我很想在Rubyland中找到与Nokogiri相同的东西,但是我能够想出的最接近的是使用祖先()的这种明显不优雅的黑客攻击:

ancestors = element.ancestors('table')
src = ancestors.any? ? first['src'] : nil
Run Code Online (Sandbox Code Playgroud)

需要三元组,因为如果在空数组上调用,则返回nil.好主意?

ruby dom ancestor nokogiri closest

7
推荐指数
2
解决办法
2956
查看次数

适用于实体子级的Google App Engine查询(不过滤)

查询中是否有实体的子项?

鉴于:

class Factory(db.Model):
    """ Parent-kind """
    name = db.StringProperty()

class Product(db.Model):
    """ Child kind, use Product(parent=factory) to make """
    @property
    def factory(self):
        return self.parent()
    serial = db.IntegerProperty()
Run Code Online (Sandbox Code Playgroud)

假设有500家工厂生产了500种产品,总计250,000种产品.有没有办法形成一个资源有效的查询,只返回一个特定工厂生产的500个产品?祖先方法是一个过滤器,因此使用例如Product.all().ancestor(factory_1)将需要重复调​​用数据存储区.

google-app-engine gql gqlquery ancestor

6
推荐指数
1
解决办法
2875
查看次数

MongoDB树模型:获取所有祖先,获取所有后代

我有一个任意的树结构.

示例数据结构:

root
  |--node1
  |     |--node2
  |     |     |--leaf1
  |     |
  |     |--leaf2
  |
  |--node3
        |--leaf3
Run Code Online (Sandbox Code Playgroud)

每个节点和叶子有2个属性:idname.


重要的问题:

1.:给出了一个叶子id.查询应该返回从root到该leaf的整个路径,包含所有节点idname属性.

如果返回值是排序的节点数组,或者它是嵌套节点的对象,那么这一点并不重要.

示例:如果给出了idof leaf2,则查询应返回:root(id, name), node1(id, name), leaf2(id, name).


2.:给定任何节点id:获取整个(子)树.在这里检索每个节点都有一个children数组的单个对象会很不错.


思想,考验和错误:

1.:首先,我尝试将树简单地建模为单个JSON文档,但随后查询将变得不可能:无法找出叶子的嵌套级别.如果我知道id从根到叶子的整个路径,我必须使用具有多个位置运算符的投影,而MongoDB目前不支持.此外,不可能对叶子进行索引,ids因为嵌套可以是无限的.

2.:下一个想法是使用平面数据设计,其中每个节点都有一个包含节点祖先的数组ids:

{
  id: ...,
  name: ...,
  ancestors: [ rootId, node1Id, ... ]
}
Run Code Online (Sandbox Code Playgroud)

这样我就必须做2个查询,以获得从root到某个节点或叶子的整个路径,这非常好.

问题:

如果我选择数据模型2.:我如何获得整个树或子树?

获得所有后代很容易:find({ancestors:"myStartingNodeId"}).但那些当然不会被排序或嵌套.

有没有办法使用聚合框架或完全不同的数据模型来解决这个问题? …

tree ancestor descendant mongodb aggregation-framework

6
推荐指数
1
解决办法
3480
查看次数

检查有向非循环图中两个顶点之间是否存在路径 - 查询

这个问题可以在每个查询的O(n + m)中轻松解决,但是这可以通过比O(n²)更好的预处理来更好地回答这些查询吗?

在树中,可以通过预订和按顺序轻松完成.我在DAG尝试了类似的东西,但它没有任何意义.

我也尝试在DAG问题中将此问题更改为LCA,但在DAG中找到LCA无法快速解决.


准确地说,约束让我们说:

n - 顶点数,最多10 ^ 5

m - 边数,最多10 ^ 5

q - 查询数量,最多10 ^ 5

algorithm graph ancestor directed-acyclic-graphs data-structures

6
推荐指数
1
解决办法
1100
查看次数

绑定祖先不工作WPF

我有一个TreeView,它被修改为在文本前面显示图像.所以我修改后的TreeViewItem被称为ImagedTreeViewItem.此ImagedTreeViewItem有一个Property,其中包含要显示的Image-Control图像.ImagedTreeViewItem还有一个属性,用于检查ImagedTreeViewItem-Icon是否为文件夹-Icon.此属性的名称为"IsFolder".

我的问题是: I'm Binding the Ancestors-Property (here: The ImagedTreeViewItem)获取我需要的数据.对于我的Image-Control,它完美地工作,对于我后来添加的上下文菜单没有.我不明白为什么,因为基本上它是同一个命令.

这是XAML中我的"ImagedTreeView"的代码:

<TreeView.Resources>
                <Style TargetType="{x:Type myClasses:ImagedTreeViewItem}">
                    <Setter Property="HeaderedItemsControl.HeaderTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
<!-- Here it works!!! -->
                                    <Image Height="16" Source="{Binding Path=Icon, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type myClasses:ImagedTreeViewItem}}}" Stretch="Fill" Width="16" />
                                    <TextBlock Margin="5,0" Text="{Binding}" />
                                    <StackPanel.ContextMenu>
                                        <ContextMenu>
<!-- Here not :( -->
                                            <MenuItem Command="my:ImagedTreeView.AddFolder" Header="Add Folder"
                                                              IsEnabled="{Binding Path=IsFolder,
                                                              RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type myClasses:ImagedTreeViewItem}}}">
                                                <MenuItem.Icon>
                                                    <Image Source="folderadd16.png" />
                                                </MenuItem.Icon>
                                            </MenuItem>
                                            <!-- ... -->
                                        </ContextMenu>
                                    </StackPanel.ContextMenu>
                                </StackPanel>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </TreeView.Resources>
Run Code Online (Sandbox Code Playgroud)

我认为这段代码中的第二个绑定找不到祖先.Visual Studio的输出窗口告诉我同样的事情:

System.Windows.Data Error: 4 …
Run Code Online (Sandbox Code Playgroud)

wpf binding ancestor

3
推荐指数
1
解决办法
1453
查看次数

如何确定是否在Smalltalk中的对象的祖先类中定义了方法

好的,所以我正在Smalltalk的一个学校作业,基本上它的要点是我写了3个"手动"设置和覆盖方法的类.MyObject类包含在另一个类ManualTracer中,该类继承自ObjectTracer.

MyObject包含一个类变量manualSet,它是一组符号,指定手动为其分配哪些方法,即重写继承.这个设置是使用类方法manualSet声明的:它接受一组符号.我的问题是我需要这个manualSet来根据以下标准过滤掉它收到的集合:

  1. 不在继承链中(作为非手动方法,直到并包括MyObject).
  2. 实际上不是手动方法.(通过方法检查是手动的)
  3. 一个实际的手动方法,但是父类(包括祖先)类已经具有该方法(通过专门继承它,或者通过覆盖它).

通过在源代码中包含注释"@Manual"来检查手动方法.到目前为止,我的代码如下所示:

manualSet: aSet
| validatedSet |
( aSet == nil ) ifTrue: [ manualSet:= nil ] 
ifFalse: [ 
    (aSet isMemberOf: Set) ifFalse:[^nil]. 
    validatedSet:= aSet select:[ :each| (each isMemberOf:Symbol)
                                    and:(self respondsTo:each)
                                    and:(self isManual:each in: self) 
                                    and:((self isManual:each in:super)not)].
    manualSet:= validatedSet.
]
Run Code Online (Sandbox Code Playgroud)

所以"超级"显然不够好,我需要经历所有的祖先,而不仅仅是父母.我还需要查看所有祖先的评论,并确定它们是否包含"@Manual".任何帮助都将非常感谢,谢谢!

inheritance smalltalk squeak parent ancestor

3
推荐指数
1
解决办法
120
查看次数

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

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

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

<a>
  <b>This node</b>
  <c>
    <a>
      <b>not this</b>
      <g>
        <b>not this</b>
      </g>
    </a>
    <a>
      <b>This node</b>
      <c/>
    </a>
  </c>
</a>


<a>
  <c>
    <a>
      <b>not this</b>
    </a>
    <a>
      <b>This node</b> 
    </a>
    <a>
      <b>This node</b> 
    </a>
    <a>
      <b>This node</b> 
    </a>
  </c>
</a>


<d>
  <b>This node</b>
</d>
Run Code Online (Sandbox Code Playgroud)

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

xml xpath ancestor

2
推荐指数
1
解决办法
2100
查看次数