-
-
Save carlosascari/cc85e74544e4a26dcd88e94eb7a281ea to your computer and use it in GitHub Desktop.
jQuery-like selector. One-liner
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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