jQuery Togglers based on data attribute.
(function liveTogglers() {
var STATE_CLASS = 'clicked';
function fire(targets, fn) {
if (targets) {
$.each(targets.split(/\s*[,;|]\s*/), function(i, target) { // iterates on each target
fn.call($('#' +target));
});
}
fn = null;
}
$(document).on('click', '[data-toggle], [data-trigger-off], [data-trigger-on]', function() {
var $this = $(this);
if ($this.hasClass('clicked')) {
fire($this.data('toggle'), function() {$(this).addClass(STATE_CLASS);});
fire($this.data('trigger-on'), function() {$(this).addClass(STATE_CLASS);});
}
else {
fire($this.data('toggle'), function() {$(this).removeClass(STATE_CLASS);});
fire($this.data('trigger-off'), function() {$(this).removeClass(STATE_CLASS);});
}
});
})();