Skip to content

Instantly share code, notes, and snippets.

@asuth
Forked from raybellis/jquery.classlist.js
Last active December 17, 2015 14:39
Show Gist options
  • Save asuth/5625635 to your computer and use it in GitHub Desktop.
Save asuth/5625635 to your computer and use it in GitHub Desktop.
Adding toggleClass
/*global jQuery */
;(function($) {
/*global document */
"use strict";
if (typeof document !== 'undefined' && ('classList' in document.createElement('a'))) {
var $ = jQuery;
var _addClass = $.fn.addClass;
var _removeClass = $.fn.removeClass;
var _toggleClass = $.fn.toggleClass;
$.fn.hasClass = function(selector) {
var elem, i, l;
for (i = 0, l = this.length ; i < l; ++i) {
elem = this[i];
if (elem.nodeType === 1 && elem.classList.contains(selector)) {
return true;
}
}
return false;
};
$.fn.addClass = function(value) {
var elem, i, l;
if (typeof value === 'string' && value && value.indexOf(' ') < 0) {
for (i = 0, l = this.length ; i < l; ++i) {
elem = this[i];
if (elem.nodeType === 1) {
elem.classList.add(value);
}
}
} else {
_addClass.apply(this, arguments);
}
return this;
};
$.fn.removeClass = function(value) {
var elem, i, l;
if (typeof value === 'string' && value && value.indexOf(' ') < 0) {
for (i = 0, l = this.length ; i < l; ++i) {
elem = this[i];
if (elem.nodeType === 1) {
elem.classList.remove(value);
}
}
} else {
_removeClass.apply(this, arguments);
}
return this;
};
$.fn.toggleClass = function(value, stateVal) {
var elem, i, l;
var isBool = typeof stateVal === "boolean";
if (typeof value === 'string' && value && value.indexOf(' ') < 0) {
for (i = 0, l = this.length ; i < l; ++i) {
elem = this[i];
if (elem.nodeType === 1) {
if (isBool && stateVal) {
elem.classList.add(value);
} else if (isBool && !stateVal) {
elem.classList.remove(value);
} else {
elem.classList.toggle(value);
}
}
}
} else {
_toggleClass.apply(this, arguments);
}
return this;
};
}
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment