Невозможно выбрать Direct Child из *goquery.Selection

В jQuery и CSS вы можете использовать > символ, который указывает только на прямой дочерний элемент.

Это работает в Goquery с чем-то вроде doc.Find("body > ul"), но когда у вас уже есть *goquery.Selection и вы хотите выбрать прямой дочерний элемент выделения, как это можно сделать?

Например:

doc.Find("body > ul > li") // Works

doc.Find("body > ul > li").Each(func(i int, s *goquery.Selection) {
    s.Find("> ul") // Does not work
})

Я хочу выполнить то, что вы ожидаете выбрать из второго блока кода, но я не добился успеха в этом.

Как это может быть сделано?

1 ответ

Как отмечено в этом каскаде (библиотека селектора, которую использует goquery), эта функциональность не реализована (и не будет) реализована.

Самый простой обходной путь будет использовать ChildrenFiltered() Метод на ваш выбор:

doc.Find("body > ul > li").Each(func(i int, s *goquery.Selection) {
    s.ChildrenFiltered("ul")
})
Другие вопросы по тегам