0

在我的 XML 中,我有一些与根元素同名的子元素。我正在寻找一种方法来选择那些子元素,而不是根元素。我一直在浏览 jQuery 选择器文档,并搜索了一堆,但我唯一能找到的是面临相反问题的人:选择孩子和根,这是完美的工作(太好了:))为了我!

这是一些示例 XML:

<myElement>
    <someElementWithVariableName>
        <someMoreVariationElement>
            <myElement>
                <leafNode1/>
                <leafNode2/>
            </myElement>
            <myElement/>
        </someMoreVariationElement>
    <someElementWithVariableName>
</myElement>

现在,当我执行以下操作时,我将获得 2 个对象:someMoreVariationElement 的根元素和 2 个子元素:

$(inputXml).find("myElement")

我想知道,也许我可以使用

$(inputXml).find("myElement > *")

但这仅适用于 myElement 实际上是根元素的情况,但这并不能保证。它可以是别的东西。就像 someElementWithVariableName 和 someMoreVariationElement 一样,它们都可以是任何东西。所以基本上......我需要一个选择器,如果它是某个东西的孩子,它只会得到 myElement 。

(如果它只选择级别 3 的所有 myElement 实例会更好(将 root 计为级别 0, someElementWithVariableName 计为级别 1, someMoreVariationElement 计为级别 2))

4

2 回答 2

3

在这种特殊情况下,您应该能够使用以下代码。(使用 Div 的示例

$(inputXml).find("myElement:not(:first)")
于 2011-04-21T11:54:21.747 回答
1

实际上,如果myElement是根元素,那么它不会被包含在结果集中,因为在选定节点下查找。

引用文档的.find() 文档

描述:获取当前匹配元素集中每个元素的后代,由选择器过滤。

你需要的是$(inputXml).find("* > myElement")

但是,如果myElement确实嵌套在另一个下(在任何深度),myElement您将同时获得这两个(假设父级也不是根..

于 2011-04-21T12:11:34.560 回答