0
|
1 //>>excludeStart("exclude", pragmas.exclude);
|
|
2 define([ "shoestring" ], function(){
|
|
3 //>>excludeEnd("exclude");
|
|
4
|
|
5 /**
|
|
6 * Replace each element in the current set with that argument HTML string or HTMLElement.
|
|
7 *
|
|
8 * @param {string|HTMLElement} fragment The value to assign.
|
|
9 * @return shoestring
|
|
10 * @this shoestring
|
|
11 */
|
|
12 shoestring.fn.replaceWith = function( fragment ){
|
|
13 if( typeof( fragment ) === "string" ){
|
|
14 fragment = shoestring( fragment );
|
|
15 }
|
|
16
|
|
17 var ret = [];
|
|
18
|
|
19 if( fragment.length > 1 ){
|
|
20 fragment = fragment.reverse();
|
|
21 }
|
|
22 this.each(function( i ){
|
|
23 var clone = this.cloneNode( true ),
|
|
24 insertEl;
|
|
25 ret.push( clone );
|
|
26
|
|
27 // If there is no parentNode, this is pointless, drop it.
|
|
28 if( !this.parentNode ){ return; }
|
|
29
|
|
30 if( fragment.length === 1 ){
|
|
31 insertEl = i > 0 ? fragment[ 0 ].cloneNode( true ) : fragment[ 0 ];
|
|
32 this.parentNode.replaceChild( insertEl, this );
|
|
33 } else {
|
|
34 for( var j = 0, jl = fragment.length; j < jl; j++ ){
|
|
35 insertEl = i > 0 ? fragment[ j ].cloneNode( true ) : fragment[ j ];
|
|
36 this.parentNode.insertBefore( insertEl, this.nextSibling );
|
|
37 }
|
|
38 this.parentNode.removeChild( this );
|
|
39 }
|
|
40 });
|
|
41
|
|
42 return shoestring( ret );
|
|
43 };
|
|
44
|
|
45 //>>excludeStart("exclude", pragmas.exclude);
|
|
46 });
|
|
47 //>>excludeEnd("exclude");
|