From 9517124389feb1e009dc8c1230ccac4efdbf8d82 Mon Sep 17 00:00:00 2001 From: Federico Brigante Date: Tue, 20 Aug 2024 18:20:27 +0700 Subject: [PATCH] Clean `getMatchingElement` (#47) --- index.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 38c5d0f..22b73a6 100644 --- a/index.js +++ b/index.js @@ -43,7 +43,7 @@ export default function elementReady(selector, { // When it's ready, only stop if requested or found if (isDomReady(target) && (stopOnDomReady || element)) { - return element ?? undefined; // No `null` + return element; } let current = element; @@ -121,11 +121,14 @@ export function observeReadyElements(selector, { }; } -function getMatchingElement({target, selector, predicate} = {}) { - if (predicate) { - const elements = target.querySelectorAll(selector); - return [...elements].find(element => predicate(element)); +function getMatchingElement({target, selector, predicate}) { + if (!predicate) { + return target.querySelector(selector) ?? undefined; // No `null` } - return target.querySelector(selector); + for (const element of target.querySelectorAll(selector)) { + if (predicate(element)) { + return element; + } + } }