Skip to content

Instantly share code, notes, and snippets.

@willtonkin
Last active July 1, 2016 13:49
Show Gist options
  • Save willtonkin/a013235e0bec19280e7b4e4b5879da66 to your computer and use it in GitHub Desktop.
Save willtonkin/a013235e0bec19280e7b4e4b5879da66 to your computer and use it in GitHub Desktop.
Life after jQuery
/****
* helpers
****/
// Thanks http://stackoverflow.com/a/32538867
var isIterable = function( obj ) {
// checks for null and undefined
if (obj == null) {
return false;
}
return typeof obj[Symbol.iterator] === 'function';
};
/****
* Element Helpers
****/
var replaceClass = function( elm, oldVal, newVal ) {
if (isIterable(elm)) {
for (var i = 0; i < elm.length; i++) {
replaceClass(elm[i], oldVal, newVal);
}
return elm;
}
var classes = elm.className
.split(' ')
.filter(function(item, pos, self) {
return item.length != 0
&& self.indexOf(item) == pos; // is unique
});
if (classes.indexOf(newVal) === -1) {
if (classes.indexOf(oldVal) !== -1) {
classes[classes.indexOf(oldVal)] = newVal
}
else if (oldVal === null) {
classes.push(newVal);
}
}
elm.className = classes.join(' ');
return elm;
};
var removeClass = function( elm, val ) {
replaceClass(elm, val, '');
return elm;
};
var addClass = function( elm, val ) {
replaceClass(elm, null, val);
return elm;
};
/****
* Event Helpers
****/
// Thanks http://stackoverflow.com/a/3150139
var addEvent = function(object, type, callback) {
if (object == null || typeof(object) == 'undefined')
return;
if (object.addEventListener) {
object.addEventListener(type, callback, false);
} else if (object.attachEvent) {
object.attachEvent("on" + type, callback);
} else {
object["on" + type] = callback;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment