Skip to content

Instantly share code, notes, and snippets.

@netsuite
Created October 29, 2013 19:43
Show Gist options
  • Save netsuite/7221257 to your computer and use it in GitHub Desktop.
Save netsuite/7221257 to your computer and use it in GitHub Desktop.
jquery toggle functionality
jQuery.fn.extend({
toggle: function( fn ) {
// Save reference to arguments for access in closure
var args = arguments,
guid = fn.guid || jQuery.guid++,
i = 0,
toggler = function( event ) {
// Figure out which function to execute
var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
// Make sure that clicks stop
event.preventDefault();
// and execute the function
return args[ lastToggle ].apply( this, arguments ) || false;
};
// link all the functions, so any of them can unbind this click handler
toggler.guid = guid;
while ( i < args.length ) {
args[ i++ ].guid = guid;
}
return this.click( toggler );
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment