/** * jQuery list effect (general) * @requires jQuery v1.2 or later * * http://www.gnu.org/licenses/gpl.html * **/ (function($) { /** * Provides a list effect that collapses the list and appends the number of list items to the remaining label. * Assumes that list items will be wrapped in a list break tag such as
  • . * Assumes that lists will have tagged labels. * Operative class should be assigned to the ul element of the list, nested elements will not be reflected in the element count. * * @example html: * *

    A Link List

    * * * @example $('.linklist').listeffect('open' , .69) * @result A list open on page load that when clicked will collapse and append the list item number, and reduce text opacity to .69 * * @example $('.linklist').listeffect(.69) * @result A list collapsed on page load (default) with appended list item number, and reduced text opacity to .69 * * Options include list open or collapsed on page load, label text opacity setting between 0 and 1 * **/ jQuery.fn.listeffect = function(startState , fadeStop) { var noNumber = this.prev().text(); var thisLink = this.attr('class'); if (startState == undefined) { startState = 'close'; } if (fadeStop == undefined) { if (startState.constructor == Number) { fadeStop = startState; startState = 'close'; } else { fadeStop = 1; } } if (startState == 'open') { $("." + thisLink + "").prev().addClass("link_" + thisLink + ""); $(".link_" + thisLink + "").toggle(function() { $("." + thisLink + "").fadeOut('normal', function() { $("." + thisLink + "").prev().append("(" + $("." + thisLink + " > li").length + ")"); }); $(".link_" + thisLink + "").fadeTo('normal', fadeStop); }, function() { $("." + thisLink + "").fadeIn('normal', function() { $(".link_" + thisLink + "").fadeTo('fast', 1 ); }); $("." + thisLink + "").prev().text(noNumber); }); } if (startState == 'close') { $("." + thisLink + "").prev().addClass("link_" + thisLink + "").append("(" + $("." + thisLink + " > li").length + ")").fadeTo('fast', fadeStop); $("." + thisLink + "").hide(); $(".link_" + thisLink + "").toggle(function() { $("." + thisLink + "").fadeIn('normal', function() { $(".link_" + thisLink + "").fadeTo('fast', 1 ); }); $("." + thisLink + "").prev().text(noNumber); }, function() { $("." + thisLink + "").fadeOut('normal', function() { $("." + thisLink + "").prev().append("(" + $("." + thisLink + " > li").length + ")"); }); $(".link_" + thisLink + "").fadeTo('normal', fadeStop); }); } return this; }; })(jQuery);