Imo funkcja all powinna zawsze zwracać tablicę, żeby użytkownik miał dostęp do metod obiektu Array (querySelectorAll zwraca pseudo-tablicę). Higher order functions robią robotę
if(Array.isArray(selectors)){
toReturn = [];
for(element of selectors){
for(el of baseElement.querySelectorAll(element)){
toReturn.push(el);
}
}
}
all(['h1', 'p']) // returns array with all h1 and p elements
Niepotrzebny bajer - ekwiwalent all('h1, p')
In vanilla.js you have to write:
['h1', 'h2', 'p'].forEach(function (element) {
document.querySelectorAll(element).forEach(function (el) {
el.addEventListner('click', yourFunction);
});
});
Aż tak źle nie jest
[...document.querySelectorAll('h1, h2, p')].forEach((el) => {
el.addEventListener('click', yourFunction);
});
Może warto by zaimplementować funkcję do znośnej obsługi event delegation?