diff --git a/Tests/LibWeb/Text/expected/DOM/Element-closest.txt b/Tests/LibWeb/Text/expected/DOM/Element-closest.txt new file mode 100644 index 00000000000..de47a9212a4 --- /dev/null +++ b/Tests/LibWeb/Text/expected/DOM/Element-closest.txt @@ -0,0 +1 @@ +
diff --git a/Tests/LibWeb/Text/input/DOM/Element-closest.html b/Tests/LibWeb/Text/input/DOM/Element-closest.html new file mode 100644 index 00000000000..fc7cbb00545 --- /dev/null +++ b/Tests/LibWeb/Text/input/DOM/Element-closest.html @@ -0,0 +1,10 @@ + + +
+ + diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp index 24ab9f97cac..c1134513340 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.cpp +++ b/Userland/Libraries/LibWeb/DOM/Element.cpp @@ -678,11 +678,11 @@ WebIDL::ExceptionOr Element::closest(StringView selectors) auto matches_selectors = [this](CSS::SelectorList const& selector_list, Element const* element) { // 4. For each element in elements, if match a selector against an element, using s, element, and scoping root this, returns success, return element. - for (auto& selector : selector_list) { - if (!SelectorEngine::matches(selector, {}, *element, {}, this)) - return false; + for (auto const& selector : selector_list) { + if (SelectorEngine::matches(selector, {}, *element, {}, this)) + return true; } - return true; + return false; }; auto const selector_list = maybe_selectors.release_value();