Skip to content

Commit 7d27cb2

Browse files
committed
feat: New function for getting elements by attribute defined selector type
This change introduces a new function called `getElements` that takes an element and a prefix as arguments and returns an array of elements based on different selectors. The function is used in the code to select elements using various selectors, such as `selector`, `closest`, `parent`, `next`, and `previous`. The new function improves code readability and reusability.
1 parent 0c4185a commit 7d27cb2

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/index.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,38 @@
292292
return;
293293
}
294294

295+
function getElements(element, prefix) {
296+
let elements = [];
297+
298+
let selectors = ['selector', 'closest', 'parent', 'next', 'previous']
299+
for (let i = 0; i < selectors.length; i++) {
300+
let name = prefix + '-' + selectors[i]
301+
const selector = element.getAttribute(name);
302+
if (selector) {
303+
if (selectors[i] === 'selector')
304+
elements = document.querySelectorAll(selector)
305+
else if (selectors[i] === 'closest')
306+
elements = element.closest(selector)
307+
else if (selectors[i] === 'parent')
308+
elements = element.parentElement.querySelectorAll(selector)
309+
else if (selectors[i] === 'next')
310+
elements = element.nextElementSibling.querySelectorAll(selector)
311+
else if (selectors[i] === 'previous')
312+
elements = element.previousElementSibling.querySelectorAll(selector)
313+
} else if (selector === '') {
314+
if (selectors[i] === 'parent')
315+
elements = element.parentElement
316+
else if (selectors[i] === 'next')
317+
elements = element.nextElementSibling
318+
else if (selectors[i] === 'previous')
319+
elements = element.previousElementSibling
320+
}
321+
}
322+
323+
return elements
324+
}
325+
326+
295327
function queryData(data, query) {
296328
if (!data)
297329
return false;
@@ -573,6 +605,7 @@
573605
cssPath,
574606
queryDocumentSelector,
575607
queryDocumentSelectorAll,
608+
getElements,
576609
queryData,
577610
searchData,
578611
sortData,

0 commit comments

Comments
 (0)