/** * CHANGES * v.2.1.3 - Made it $.noConflict() compatible * v.2.1.2 - Fixed bug in which nested fieldsets do not work correctly. * v.2.1.1 - Forgot to put the new filter from v.2.1 into the if (settings.closed) * v.2.1 - Changed jQuery(this).parent().children().filter( ELEMENTS HERE) to jQuery(this).parent().children().not('label'). Prevents you from having to guess what elements will be in the fieldset. * v.2.0 - Added settings to allow a fieldset to be initiated as closed. * * This script may be used by anyone, but please link back to me. * * Copyright 2009-2010. Michael Irwin (http://michael.theirwinfamily.net) */ jQuery.fn.collapse = function(options) { var defaults = { closed : false } settings = jQuery.extend({}, defaults, options); return this.each(function() { var obj = jQuery(this); obj.find("legend:first").addClass('collapsible').click(function() { if (obj.hasClass('collapsed')) obj.removeClass('collapsed').addClass('collapsible'); jQuery(this).removeClass('collapsed'); obj.children().not('legend').toggle("slow", function() { if (jQuery(this).is(":visible")) obj.find("legend:first").addClass('collapsible'); else obj.addClass('collapsed').find("legend").addClass('collapsed'); }); }); if (settings.closed) { obj.addClass('collapsed').find("legend:first").addClass('collapsed'); obj.children().not("legend:first").css('display', 'none'); } }); };