Skip to content

Instantly share code, notes, and snippets.

@caiotarifa
Last active August 29, 2015 14:09
Show Gist options
  • Save caiotarifa/cc7d486292f39157d763 to your computer and use it in GitHub Desktop.
Save caiotarifa/cc7d486292f39157d763 to your computer and use it in GitHub Desktop.
Simple DOM Selector for Vanilla JS
var __;
__ = function(selector, filter) {
'use strict';
var response;
function filtering(selectors, filter) {
switch (filter) {
case "first":
return selectors[0];
break;
case "last":
return selectors[selectors.length - 1];
break;
default:
return selectors[filter];
break;
}
}
response = [];
selector = selector.trim();
if (typeof filter === "string") {
filter = filter.trim();
}
if (/^[.#a-zA-Z0-9_-][a-zA-Z_-]+$/.test(selector)) {
switch (selector.substr(0, 1)) {
case '.':
response = document.getElementsByClassName(selector.substr(1));
break;
case '#':
response.push(document.getElementById(selector.substr(1)));
break;
default:
response = document.getElementsByTagName(selector);
break;
}
if (typeof filter !== "undefined") {
response = filtering(response, filter)
}
} else {
if (typeof filter !== "undefined") {
switch (filter) {
case "first":
response = document.querySelector(selector);
break;
case "last":
response = document.querySelectorAll(selector);
response = response[response.length - 1];
break;
default:
response = document.querySelectorAll(selector);
response = response[filter];
break;
}
} else {
response = document.querySelectorAll(selector);
if (response.length < 1) {
response = [];
}
}
}
return response;
};
@caiotarifa
Copy link
Author

The filter parameter accepts first, last or the number of the element it you'll want to get.

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