Skip to content

Instantly share code, notes, and snippets.

@alexander-heimbuch
Last active December 23, 2015 10:35
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 alexander-heimbuch/dfaac7c1288bd490a9b7 to your computer and use it in GitHub Desktop.
Save alexander-heimbuch/dfaac7c1288bd490a9b7 to your computer and use it in GitHub Desktop.
Minimal jQuery Replacement
/**
* Minimal jQuery replacement
*/
(function () {
'use strict';
var find = function (element) {
return function (query) {
var results = element.querySelectorAll(query),
result;
if (results.length === 1) {
result = extend(results[0])
return result;
}
results = Array.prototype.slice.call(results);
results.forEach(function (result) {
result = extend(result);
});
return results;
}
},
addClass = function (element) {
return function (newClass) {
var css = element.className.split(' '),
newClass = newClass.split(' ');
newClass.forEach(function (name) {
if (css.indexOf(name) > -1) {
return;
}
css.push(name);
});
element.className =
css.filter(function (name) {
return name !== '';
})
.join(' ')
.trim();
return element;
}
},
removeClass = function (element) {
return function (oldClass) {
var css = element.className.split(' '),
oldClass = oldClass.split(' ');
oldClass.forEach(function (name) {
var index = css.indexOf(name);
if (index === -1) {
return;
}
delete css[index];
});
element.className =
css.filter(function (name) {
return name !== '';
})
.join(' ')
.trim();
return element;
}
},
extend = function (element) {
element.find = find(element);
element.addClass = addClass(element);
element.removeClass = removeClass(element);
return element;
};
window.$ = extend(document);
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment