Skip to content

Instantly share code, notes, and snippets.

@lekoala
Created April 20, 2023 12:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lekoala/7ec2732e2bca73363daeac2d86130b93 to your computer and use it in GitHub Desktop.
Save lekoala/7ec2732e2bca73363daeac2d86130b93 to your computer and use it in GitHub Desktop.
/**
* @callback ElementCallback
* @param {HTMLElement} el
* @returns {void}
*/
const set = new WeakSet();
/**
* Initialize an element exactly once
* @param {String} selector
* @param {ElementCallback} callback
*/
export default function initialize(selector, callback) {
document.querySelectorAll(selector).forEach(
/**
* @param {HTMLElement} el
*/
(el) => {
if (set.has(el)) {
return;
}
set.add(el);
callback(el);
}
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment