leodutra
1/18/2014 - 6:19 AM

jQuery Togglers based on data attribute.

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);});
		}
	});

})();