X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fmanipulation.js;h=23463d16e22e3dd900b3a9860fd2e0c73060e188;hb=1a14a38ff77839b2a71fbc3f3c0890ebe62438c7;hp=081bb54819c6866f362ad443cbe962d477eec8c0;hpb=4681216c4bdf25b6b146b3f952917f46079c6ef7;p=jquery.git diff --git a/src/manipulation.js b/src/manipulation.js index 081bb54..23463d1 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -77,7 +77,14 @@ jQuery.fn.extend({ wrapInner: function( html ) { return this.each(function() { - jQuery( this ).contents().wrapAll( html ); + var self = jQuery( this ), contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } }); }, @@ -182,11 +189,13 @@ jQuery.fn.extend({ (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) && !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) { + value = value.replace(rxhtmlTag, fcloseTag); + try { for ( var i = 0, l = this.length; i < l; i++ ) { // Remove element nodes and prevent memory leaks if ( this[i].nodeType === 1 ) { - cleanData( this[i].getElementsByTagName("*") ); + jQuery.cleanData( this[i].getElementsByTagName("*") ); this[i].innerHTML = value; } } @@ -196,6 +205,14 @@ jQuery.fn.extend({ this.empty().append( value ); } + } else if ( jQuery.isFunction( value ) ) { + this.each(function(i){ + var self = jQuery(this), old = self.html(); + self.empty().append(function(){ + return value.call( this, i, old ); + }); + }); + } else { this.empty().append( value ); } @@ -205,6 +222,12 @@ jQuery.fn.extend({ replaceWith: function( value ) { if ( this[0] && this[0].parentNode ) { + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( !jQuery.isFunction( value ) ) { + value = jQuery( value ).detach(); + } + return this.each(function() { var next = this.nextSibling, parent = this.parentNode; @@ -301,7 +324,7 @@ function cloneCopyEvent(orig, ret) { } function buildFragment( args, nodes, scripts ) { - var fragment, cacheable, cached, cacheresults, doc; + var fragment, cacheable, cacheresults, doc; if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && args[0].indexOf("