/* * jQuery Array - A collection of jQuery plugins to make jQuery objects behave * more like a Javascript Array * * Based on work by the jQuery Community (http://www.nabble.com/.each-backwards---tf2399145.html#a6690114) * and Kenton Simpson (http://www.brainknot.com/code/jQarray.js) * * Copyright (c) 2007 Paul McLanahan, Kenton Simpson * * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * * Revision: $Id$ * * Version: 0.1 */ /** * Reverse the order elements appear in the jQuery element collection * * @example $("li").reverse().each(function(i) { * $(this).prepend(i+": "); * }); * @before
  • First Item
  • *
  • Second Item
  • *
  • Third Item
  • * @result
  • 2: First Item
  • *
  • 1: Second Item
  • *
  • 0: Third Item
  • * * @name reverse * @type jQuery * @param Boolean destruct If true this function will act distructively on a cached jQuery object. * @cat Plugins/Array */ jQuery.fn.reverse = function(destruct) { return this[destruct?'setArray':'pushStack'](this.get().reverse()); }; /** * Sort the order elements appear in the jQuery element collection * * @example $("li").sort(function( a, b ){ * return( parseInt( a.innerHTML ) - parseInt( b.innerHTML ) ); * }); * * @name sort * @type jQuery * @param Function fn Sort function to act on jQuery element collection. * @param Boolean destruct If true this function will act distructively on a cached jQuery object. * @cat Plugins/Array */ jQuery.fn.sort = function(fn,destruct) { return this[destruct?'setArray':'pushStack'](this.get().sort(fn)); }; /** * Randomize the order of the elements in the current jQuery element collection. * Note: Does not affect the order of elements in the DOM. * * @example $("li").randomize(); * * @name randomize * @type jQuery * @param Boolean destruct If true, this function will act distructively on a cached jQuery object. * @cat Plugins/Array */ jQuery.fn.randomize = function(destruct){ return this.sort( function(){return(Math.round(Math.random())-0.5)}, destruct ); }; /** * Take a slice out of the current jQuery element collection * * @example $li = $("li").slice(2, 6).hide(); * @result $li.length == 4 * * @name slice * @type jQuery * @param Int Start of slice * @param Int End of slice * @param Boolean destruct If true, this function will act distructively on a cached jQuery object * @cat Plugins/Array */ jQuery.fn.slice = function(start,end,destruct) { return this[destruct?'setArray':'pushStack']( this.get().slice(start,end) ); }; /** * Remove the last element in the jQuery element collection and disregard * Note: This does not return the popped element, which is unlike the native Array.pop * Javascript function. It returns a jQuery object to maintain chainability. See * returnObject parameter for a workaround. * * @example $('li').pop().length == $('li').length - 1 * * @name shift * @type jQuery * @param Boolean destruct If true, this function will act distructively on a cached jQuery object * @param Object returnObject If supplied the object will be extended with a "pop" property containing the popped element * @cat Plugins/Array */ jQuery.fn.pop = function(destruct,returnObject){ if(returnObject)jQuery.extend(returnObject,{pop:this[this.length-1]}); return this.slice( 0, -1, destruct ); }; /** * Remove the first element in the jQuery element collection and disregard * Note: This does not return the shifted element, which is unlike the native Array.shift * Javascript function. It returns a jQuery object to maintain chainability. See * returnObject parameter for a workaround. * * @example $('li').shift()[0] == 2nd
  • found * * @name shift * @type jQuery * @param Boolean destruct If true, this function will act distructively on a cached jQuery object * @param Object returnObject If supplied the object will be extended with a "shift" property containing the shifted element * @cat Plugins/Array */ jQuery.fn.shift = function(destruct,returnObject){ if(returnObject)jQuery.extend(returnObject,{shift:this[0]}); return this.slice( 1, this.length, destruct ); }; /** * Move the first jQuery element to the last * * @example $('li').rotate()[0] == 2nd
  • found * * @name rotate * @type jQuery * @param Boolean destruct If true, this function will act distructively on a cached jQuery object * @cat Plugins/Array */ jQuery.fn.rotate = function(destruct){ var a = this.get(); a.push(a.shift()); return this[destruct?'setArray':'pushStack']( a ); }; /** * Move the last jQuery element to the first * * @example $('li').rrotate()[0] == last
  • found * * @name rrotate * @type jQuery * @param Boolean destruct If true, this function will act distructively on a cached jQuery object * @cat Plugins/Array */ jQuery.fn.rrotate = function(destruct){ var a = this.get(); a.unshift(a.pop()); return this[destruct?'setArray':'pushStack']( a ); };