File tree Expand file tree Collapse file tree 2 files changed +13
-5
lines changed
Expand file tree Collapse file tree 2 files changed +13
-5
lines changed Original file line number Diff line number Diff line change @@ -211,6 +211,16 @@ func (node *Node) IsTextNode() bool {
211211// Adapted from [https://developer.mozilla.org/en-US/docs/Web/API/Element/closest](MDN Element: closest() method)
212212func (node * Node ) Closest (selector string ) * Node {
213213 traverser := NewTraverser (node )
214-
214+ selectors := TokenizeSelectorsAndCombinators (selector )
215+
216+ for traverser .GetCurrentNode () != nil {
217+ if matchFromRightMostSelectors (traverser .GetCurrentNode (), selectors ) {
218+ break
219+ } else if traverser .GetCurrentNode ().GetPreviousNode () == nil {
220+ traverser .SetCurrentNodeTo (traverser .GetCurrentNode ().GetParent ())
221+ } else {
222+ traverser .Previous ()
223+ }
224+ }
215225 return traverser .GetCurrentNode ()
216226}
Original file line number Diff line number Diff line change @@ -114,7 +114,6 @@ func TestRemoveNode(t *testing.T){
114114 //t.Log(GoHtml.NodeTreeToHTML(article))
115115}
116116
117- /*
118117func TestClosest (t * testing.T ){
119118 node , err := testFile4NodeTree ()
120119 if err != nil {
@@ -125,13 +124,12 @@ func TestClosest(t *testing.T){
125124 t .Fatal ("Node is nil." )
126125 }
127126
128- node = node.Closest("ol .ordered-list")
127+ node = node .Closest ("img+ .ordered-list" )
129128 if node == nil {
130129 t .Fatal ("Node is nil" )
131130 }else if node .GetTagName () != "ol" {
132131 t .Fatal ("Unexpected element." )
133132 }
134133
135134
136- }
137- */
135+ }
You can’t perform that action at this time.
0 commit comments