【问题标题】:jQuery xml find nodes without a specific childjQuery xml 查找没有特定子节点的节点
【发布时间】:2011-01-13 04:19:49
【问题描述】:

是否可以找到所有没有指定子节点的节点?

例如:

(xml)

<item>
    <name>item 1</name>
    <admin>true</admin>
</item>

<item>
    <name>item 2</name>
    <admin>true</admin>
</item>

<item>
    <name>item 3</name>
    <parent>item 1</parent>
    <url></url>
    <admin>false</admin>
</item>

我想挑选出所有没有子节点“父”的节点。如果我设置一个名为 parent 的属性并调用:

(jquery)

$(xml).find("item:not([parent])").each

但我想知道是否可以通过使用子节点来代替。

【问题讨论】:

    标签: jquery xml find


    【解决方案1】:

    您可能会得到其他好的建议——可能仅基于选择器——但我相信这会奏效。

    $('item').filter(function() {
        return $(this).find('parent').length === 0;
    }).doSomethingWithTheSetOfItemsWithoutParents();
    

    更新

    基于selector documentation,我认为这个会做你想做的:

    $('item:not(:has(parent))')
    

    【讨论】:

    • 感谢您的回复...我忘了提到我能够让它与您在这里所拥有的类似的东西一起工作,但我希望有一种方法可以使用选择器来完成它.
    【解决方案2】:

    你能用jQuery原生的parent() selector吗?

    【讨论】:

    • 我实际上是在尝试创建一个带有弹出菜单的菜单系统。我试图设置它而不定义 xml 文件的 DOM 中的菜单层次结构。基本上,如果一个菜单是一个弹出菜单,它就有一个父级。如果我尝试在 xml 文件的 DOM 结构中模拟菜单关系(即尝试选择子项的子项等),则 xml 开始变得过于复杂。在这种情况下,我将无法使用 parent() 选择器,因为我最终想要的实际层次结构不一定反映在 DOM 中。
    • 我也在考虑这样做,如果需要我可以重复使用项目。
    猜你喜欢
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多