Skip to content

Instantly share code, notes, and snippets.

@tazzkiller
Last active December 26, 2015 05:08
Show Gist options
  • Save tazzkiller/7098194 to your computer and use it in GitHub Desktop.
Save tazzkiller/7098194 to your computer and use it in GitHub Desktop.
(function ($) {
// jQuery plugin definition
$.fn.jToggle = function (params) {
// merge default and user parameters
params = $.extend({
jToggleHover: 0,
jToggleAll: 0,
jToggleClass: 'jToggle',
jToggleOn: function () {},
jToggleOff: function () {}
}, params);
// traverse all nodes
var selector = this;
selector.each(function () {
// express a single node as a jQuery object
var el = $(this),
index = $(this).index();
if (params.jToggleHover == 1) {
$(el).on({
mouseenter: function () {
el.addClass(params.jToggleClass);
params.jToggleOn.call(this);
},
mouseleave: function () {
el.removeClass(params.jToggleClass);
params.jToggleOff.call(this);
}
});
} else {
el.on('click', function () {
// detect toggle status
if (el.hasClass(params.jToggleClass)) {
el.removeClass(params.jToggleClass);
params.jToggleOff.call(this);
} else {
if (params.jToggleAll == 1) {
selector.removeClass(params.jToggleClass);
params.jToggleOff.call(this);
}
el.addClass(params.jToggleClass);
params.jToggleOn.call(this);
}
});
}
});
// allow jQuery chaining
return this;
};
})(jQuery);
/*
MMP""MM""YMM db MMM"""AMV MMM"""AMV `7MMF' `YMM' `7MMF'`7MMF' `7MMF' `7MM"""YMM `7MM"""Mq.
P' MM `7 ;MM: M' AMV M' AMV MM .M' MM MM MM MM `7 MM `MM.
MM ,V^MM. ' AMV ' AMV MM .d" MM MM MM MM d MM ,M9
MM ,M `MM AMV AMV MMMMM. MM MM MM MMmmMM MMmmdM9
MM AbmmmqMA AMV , AMV , MM VMA MM MM , MM , MM Y , MM YM.
MM A' VML AMV ,M AMV ,M MM `MM. MM MM ,M MM ,M MM ,M MM `Mb.
.JMML..AMA. .AMMA.AMVmmmmMM AMVmmmmMM .JMML. MMb..JMML..JMMmmmmMMM .JMMmmmmMMM .JMMmmmmMMM .JMML. .JMM.
demonstration : http://jsfiddle.net/tazzkiller/2JyFe/1/
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment