rselfClosing = /^(?:abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i,
rtagName = /<(\w+)/,
rtbody = /<tbody/i,
+ rhtml = /</,
fcloseTag = function(all, front, tag){
return rselfClosing.test(tag) ?
all :
},
before: function() {
- return this.domManip(arguments, false, function(elem){
- this.parentNode.insertBefore( elem, this );
- });
+ if ( this[0] && this[0].parentNode ) {
+ 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 );
+ }
},
after: function() {
- return this.domManip(arguments, false, function(elem){
- this.parentNode.insertBefore( elem, this.nextSibling );
- });
+ if ( this[0] && this[0].parentNode ) {
+ 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 );
+ }
},
clone: function( events ) {
},
replaceWith: function( value ) {
- return this.after( value ).remove();
+ if ( this[0] && this[0].parentNode ) {
+ return this.after( value ).remove();
+ } else {
+ return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
+ }
},
detach: function( selector ) {
if ( args[0] && args[0].parentNode && args[0].parentNode.nodeType === 11 ) {
results = { fragment: args[0].parentNode };
} else {
- results = buildFragment( args, this[0], scripts );
+ results = buildFragment( args, this, scripts );
}
first = results.fragment.firstChild;
jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
ret = ret.concat( elems );
}
-
- return this.pushStack( ret, name, selector );
+ return this.pushStack( ret, name, insert.selector );
};
});
if ( !elem ) { return; }
// Convert html string into DOM nodes
- if ( typeof elem === "string" ) {
+ if ( typeof elem === "string" && !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+
+ } else if ( typeof elem === "string" ) {
// Fix "XHTML"-style tags in all browsers
elem = elem.replace(rxhtmlTag, fcloseTag);