From 3a2cfbb8be7c64ac5deb782c0f5b923b4f902077 Mon Sep 17 00:00:00 2001 From: ptrcnull Date: Thu, 7 Jul 2022 23:57:08 +0200 Subject: [PATCH] feat: Add Node#QuerySelectorAll --- html.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/html.go b/html.go index 02e1534..a0011d6 100644 --- a/html.go +++ b/html.go @@ -30,6 +30,20 @@ func (n *Node) QuerySelector(selector string) *Node { return n.GetElementByTagName(selector) } +func (n *Node) QuerySelectorAll(selector string) []*Node { + return n.FindMany(func(n *Node) bool { + if strings.HasPrefix(selector, "#") { + return n.HasAttr("id", selector[1:]) + } + + if strings.HasPrefix(selector, ".") { + return n.HasClass(selector[1:]) + } + + return n.Type == html.ElementNode && n.Data == selector + }) +} + func (n *Node) GetElementById(id string) *Node { return n.FindOne(func(n *Node) bool { return n.HasAttr("id", id)