X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fmanipulation.js;h=17cfa842dc6d9f48ac389cdd5701233e728aa214;hb=a5f8a1441158b66efb76de1d15f061f87f7bdc17;hp=73b0de31d6b1189da5bf07f3ed529707c2bef427;hpb=3eb56b09b8ce903355b9173b6e60b2354a6c7ba7;p=jquery.git diff --git a/src/manipulation.js b/src/manipulation.js index 73b0de3..17cfa84 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -1,10 +1,10 @@ var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, rleadingWhitespace = /^\s+/, - rxhtmlTag = /(<(\w+)[^>]*?)\/>/g, + rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g, rselfClosing = /^(?:abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i, - rtagName = /<(\w+)/, + rtagName = /<([\w:]+)/, rtbody = /", "" ], td: [ 3, "", "
" ], col: [ 2, "", "
" ], + area: [ 1, "", "" ], _default: [ 0, "", "" ] }; @@ -31,22 +32,17 @@ if ( !jQuery.support.htmlSerialize ) { jQuery.fn.extend({ text: function( text ) { - if ( typeof text !== "object" && text !== undefined ) - return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); - - var ret = ""; - - jQuery.each( text || this, function(){ - jQuery.each( this.childNodes, function(){ - if ( this.nodeType !== 8 ) { - ret += this.nodeType !== 1 ? - this.nodeValue : - jQuery.fn.text( [ this ] ); - } + if(jQuery.isFunction(text)) { + return this.each(function() { + return jQuery(this).text( text.call(this) ); }); - }); + } - return ret; + if ( typeof text !== "object" && text !== undefined ) { + return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); + } + + return jQuery.getText( this ); }, wrapAll: function( html ) { @@ -58,7 +54,7 @@ jQuery.fn.extend({ if ( this[0] ) { // The elements to wrap the target around - var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(); + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); if ( this[0].parentNode ) { wrap.insertBefore( this[0] ); @@ -90,6 +86,14 @@ jQuery.fn.extend({ }); }, + unwrap: function() { + return this.parent().each(function(){ + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + }, + append: function() { return this.domManip(arguments, true, function(elem){ if ( this.nodeType === 1 ) { @@ -111,12 +115,10 @@ jQuery.fn.extend({ return this.domManip(arguments, false, function(elem){ this.parentNode.insertBefore( elem, this ); }); - } else { - var set = jQuery.isFunction(arguments[0]) ? - jQuery( arguments[0]() ) : - jQuery.apply(jQuery, arguments); - - return this.pushStack( set.add( this ), "before", arguments ); + } else if ( arguments.length ) { + var set = jQuery(arguments[0]); + set.push.apply( set, this.toArray() ); + return this.pushStack( set, "before", arguments ); } }, @@ -125,10 +127,10 @@ jQuery.fn.extend({ return this.domManip(arguments, false, function(elem){ this.parentNode.insertBefore( elem, this.nextSibling ); }); - } else { - return jQuery.isFunction(arguments[0]) ? - this.add( arguments[0]() ) : - this.add.apply( this, arguments ); + } else if ( arguments.length ) { + var set = this.pushStack( this, "after", arguments ); + set.push.apply( set, jQuery(arguments[0]).toArray() ); + return set; } }, @@ -160,21 +162,8 @@ jQuery.fn.extend({ // Copy the events from the original to the clone if ( events === true ) { - var orig = this.find("*").andSelf(), i = 0; - - ret.find("*").andSelf().each(function(){ - if ( this.nodeName !== orig[i].nodeName ) { return; } - - var events = jQuery.data( orig[i], "events" ); - - for ( var type in events ) { - for ( var handler in events[ type ] ) { - jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data ); - } - } - - i++; - }); + cloneCopyEvent( this, ret ); + cloneCopyEvent( this.find("*"), ret.find("*") ); } // Return the cloned set @@ -189,15 +178,21 @@ jQuery.fn.extend({ // See if we can take a shortcut and just use innerHTML } else if ( typeof value === "string" && !/