Skip to content

Instantly share code, notes, and snippets.

@carlosascari
Last active June 24, 2018 05:34
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 carlosascari/cc85e74544e4a26dcd88e94eb7a281ea to your computer and use it in GitHub Desktop.
Save carlosascari/cc85e74544e4a26dcd88e94eb7a281ea to your computer and use it in GitHub Desktop.
jQuery-like selector. One-liner
/**
* jQuery selector substitute
* A quick one-liner for a jQuery-like selector, when a project
* does not need the extra weight early on, but may need jQuery later on.
* @param {String} query - CSS selector
* @param {HTMLElement} context - Element to query, defaults to `document`
* @return {Array<Element>}
*/
$ = (query, context=document) => Array.prototype.slice.call(context.querySelectorAll(query));
/**
* 2nd Version: Allows html creation $('<div class="blah"></div>')
* When first character is `<` (Opening Tag)
* @param {String} html
* @return {Array<Element>}
*/
$ = (query, context=document) => {
if (query.trim()[0] == '<') {
const createElements = (str) => {
var div = document.createElement('div');
div.innerHTML = str;
var container = document.createDocumentFragment();
for (var i=0; i < div.childNodes.length; i++) {
var node = div.childNodes[i].cloneNode(true);
container.appendChild(node);
}
return container.childNodes;
}
return Array.prototype.slice.call(createElements(query))
} else {
return Array.prototype.slice.call(context.querySelectorAll(query))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment