Skip to content

Instantly share code, notes, and snippets.

@the-vampiire
Created November 28, 2019 04:09
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 the-vampiire/598f6fa5c2dc5209951d922008273bbc to your computer and use it in GitHub Desktop.
Save the-vampiire/598f6fa5c2dc5209951d922008273bbc to your computer and use it in GitHub Desktop.
90% of JQuery
/**
* 90% of JQuery
* @param {String} cssSelectorString: any valid css selector syntax
* @returns for ID selectors: Element
* @returns for others: Element[] (NodeList)
*/
export const $ = cssSelectorString =>
/^#/.test(cssSelectorString)
? document.querySelector(cssSelectorString)
: document.querySelectorAll(cssSelectorString);
@the-vampiire
Copy link
Author

/**
 * 95% of JQuery
 * - accepts multiple selectors space-separated
 * @param {String} cssSelectorString
 */
export const $95 = cssSelectorString => {
  return / +/.test(cssSelectorString)
    ? cssSelectorString.split(" ").reduce((flatResults, selector) => {
        const result = $95(selector);
        return NodeList.prototype.isPrototypeOf(result)
          ? [...flatResults, ...result]
          : [...flatResults, result];
      }, [])
    : /^#/.test(cssSelectorString)
    ? document.querySelector(cssSelectorString)
    : document.querySelectorAll(cssSelectorString);
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment