4 ms·
Behold my jQuery replacement: export function each(qs, cb) { if (typeof qs === "string") { qs = document.querySelectorAll(qs); }
by earthboundkid 5y ago
Behold my jQuery replacement:
export function each(qs, cb) {
if (typeof qs === "string") {
qs = document.querySelectorAll(qs);
}
if (!qs) {
return;
}
if (qs.length === undefined) {
qs = [qs];
}
for (var i = 0; i < qs.length; i++) {
cb(qs[i], i);
}
}
export function on(ev, qs, cb) {
let cancelFns = [];
each(qs, (el) => {
el.addEventListener(ev, cb);
cancelFns.push(() => {
el.removeEventListener(ev, cb);
});
});
return () => {
cancelFns.forEach((fn) => {
fn();
});
};
}
- ___q 5y agoThat's much worse than jQuery's implementation, there's no event delegation or namespacing https://api.jquery.com/on/#event-names https://api.jquery.com/on/#event-names https://api.jquery.com/on/#direct-and-delegated-events https://api.jquery.com/on/#direct-and-delegated-events