Как выбрать дочерние элементы, но не корневой элемент (с тем же именем) в jQuery - PullRequest
0 голосов
/ 21 апреля 2011

в моем XML у меня есть несколько дочерних элементов с тем же именем, что и корневой элемент.Я ищу способ выбрать только эти дочерние элементы, но не корневой элемент.Я просматривал документацию по селектору jQuery и гуглил кучу, но единственное, что я могу найти, это люди, которые сталкиваются с противоположной проблемой: выбор дочерних элементов и root, что отлично работает (слишком хорошо :))для меня!

Вот пример XML:

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

Теперь, когда я сделаю следующее, я получу 2 объекта: корневой элемент и 2 дочерних элемента someMoreVariationElement:

$(inputXml).find("myElement")

Мне было интересно, может быть, я смогу использовать

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

Но это работает только в тех случаях, когда myElement действительно является корневым элементом, но это не гарантируется.Это может быть что-то еще.Так же, как someElementWithVariableName и someMoreVariationElement, которые могут быть обоими.Так что в основном ... мне нужен селектор, который получит myElement, только если он является потомком чего-либо.

(Было бы еще лучше, если бы он выбирал только все экземпляры myElement на уровне 3 (считая root как уровень0, someElementWithVariableName как уровень 1, а someMoreVariationElement как уровень 2))

Ответы [ 2 ]

3 голосов
/ 21 апреля 2011

В этом конкретном случае вы сможете использовать следующий код. ( Пример использования Divs )

$(inputXml).find("myElement:not(:first)")
1 голос
/ 21 апреля 2011

На самом деле, если myElement является корневым элементом, он будет не включаться в набор результатов, так как поиск выполняется под выбранным узлом.

Цитирование из документации .find() Документы

Описание : Получить потомков из каждый элемент в текущем наборе сопоставленные элементы, отфильтрованные селектор.

Что вам нужно, это $(inputXml).find("* > myElement")

Но если myElement действительно является вложенным ( на любой глубине ) под другим myElement, вы получите оба из них ( при условии, что родитель также не является корнем .. )

...