Skip to content

Instantly share code, notes, and snippets.

@1000ch
Last active December 16, 2015 21:39
Show Gist options
  • Save 1000ch/5501425 to your computer and use it in GitHub Desktop.
Save 1000ch/5501425 to your computer and use it in GitHub Desktop.
//wasting
var rx = {
id: /^#([\w\-]+)$/,
className: /^\.([\w\-]+)$/,
tagName: /^[\w\-]+$/,
name: /^\[name=["']?([\w\-]+)["']?\]$/
};
var nativeSlice = [].slice;
//select element with filtering id, className, tagName, name selector.
function select(selector, context) {
var result, m;
if(!context || !context.querySelector) {
context = document;
}
if(m = rx.id.exec(selector)) {
var element = document.getElementById(m[1]);
if(element) {
result = [element];
} else {
result = [];
}
} else if(m = rx.className.exec(selector)) {
result = context.getElementsByClassName(m[1]);
} else if(m = rx.tagName.exec(selector)) {
result = context.getElementsByTagName(m[1]);
} else if(m = rx.name.exec(selector)) {
result = context.getElementsByName(m[1]);
} else {
result = context.querySelectorAll(selector);
}
return nativeSlice.call(result);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment