2017-08-28 2 views
0

En jQuery et CSS, vous pouvez utiliser le caractère > qui pointe uniquement vers l'élément enfant direct.Impossible de sélectionner l'enfant direct depuis * goquery.Selection

Cela fonctionne Goquery avec quelque chose comme doc.Find("body > ul"), mais quand vous avez déjà un *goquery.Selection et que vous souhaitez sélectionner un élément enfant direct de la sélection, comment cela peut-il être fait?

Par exemple:

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

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

Je veux accomplir ce que vous vous attendez à être sélectionné dans le deuxième bloc de code, mais je ne l'ai pas eu de succès avec cela.

Comment cela peut-il être fait?

Répondre

1

Comme indiqué dans this cascadia ticket (la bibliothèque de sélecteurs utilisée par goquery), cette fonctionnalité n'est pas (et ne sera pas) implémentée.

La solution la plus simple serait d'utiliser la méthode ChildrenFiltered() sur votre sélection:

doc.Find("body > ul > li").Each(func(i int, s *goquery.Selection) { 
    s.ChildrenFiltered("ul") 
}) 
+0

@Acidic: Est-ce que cela vous aide? –

+0

oui, c'est la solution. Merci! – Acidic

+0

En fait, j'ai de nouveau des problèmes avec ça, il semble que 'ChildrenFiltered' capture encore les enfants profonds quand je veux seulement le restreindre pour diriger les enfants. – Acidic