Mercurial > nebulaweb3
diff default/node_modules/shoestring/src/dom/replaceWith.js @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/default/node_modules/shoestring/src/dom/replaceWith.js Sat May 31 09:21:51 2025 +0800 @@ -0,0 +1,47 @@ +//>>excludeStart("exclude", pragmas.exclude); +define([ "shoestring" ], function(){ +//>>excludeEnd("exclude"); + + /** + * Replace each element in the current set with that argument HTML string or HTMLElement. + * + * @param {string|HTMLElement} fragment The value to assign. + * @return shoestring + * @this shoestring + */ + shoestring.fn.replaceWith = function( fragment ){ + if( typeof( fragment ) === "string" ){ + fragment = shoestring( fragment ); + } + + var ret = []; + + if( fragment.length > 1 ){ + fragment = fragment.reverse(); + } + this.each(function( i ){ + var clone = this.cloneNode( true ), + insertEl; + ret.push( clone ); + + // If there is no parentNode, this is pointless, drop it. + if( !this.parentNode ){ return; } + + if( fragment.length === 1 ){ + insertEl = i > 0 ? fragment[ 0 ].cloneNode( true ) : fragment[ 0 ]; + this.parentNode.replaceChild( insertEl, this ); + } else { + for( var j = 0, jl = fragment.length; j < jl; j++ ){ + insertEl = i > 0 ? fragment[ j ].cloneNode( true ) : fragment[ j ]; + this.parentNode.insertBefore( insertEl, this.nextSibling ); + } + this.parentNode.removeChild( this ); + } + }); + + return shoestring( ret ); + }; + +//>>excludeStart("exclude", pragmas.exclude); +}); +//>>excludeEnd("exclude");