- pushStack: function(a) {\r
- if ( !this.stack )\r
- this.stack = [];\r
- this.stack.push( this.get() );\r
- return this.set( a );\r
+ pushStack: function(a,args) {\r
+ var fn = args && args[args.length-1];\r
+ var fn2 = args && args[args.length-2];\r
+ \r
+ if ( fn && fn.constructor != Function ) fn = null;\r
+ if ( fn2 && fn2.constructor != Function ) fn2 = null;\r
+\r
+ if ( !fn ) {\r
+ if ( !this.stack ) this.stack = [];\r
+ this.stack.push( this.get() );\r
+ this.set( a );\r
+ } else {\r
+ var old = this.get();\r
+ this.set( a );\r
+\r
+ if ( fn2 && a.length || !fn2 )\r
+ this.each( fn2 || fn ).set( old );\r
+ else\r
+ this.set( old ).each( fn );\r
+ }\r
+\r
+ return this;\r