X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fcore.js;h=b8b207b71ed2359d6b94fd656cbb8d26883a4bf6;hb=4ca4ce52f76f4db64f9a8350aa60ab54eba15697;hp=b35abade334a6ad169a74b70698f3a1cf7fd7d2a;hpb=4b25b147ab60a026ba1841b313d713fe57530b04;p=jquery.git diff --git a/src/core.js b/src/core.js index b35abad..b8b207b 100644 --- a/src/core.js +++ b/src/core.js @@ -909,13 +909,14 @@ jQuery.extend({ }, clean: function( elems, context, fragment ) { - var ret = [], scripts = []; context = context || document; // !context.createElement fails in IE with an error but returns typeof 'object' if ( typeof context.createElement === "undefined" ) context = context.ownerDocument || context[0] && context[0].ownerDocument || document; + var ret = [], scripts = [], div = context.createElement("div"); + jQuery.each(elems, function(i, elem){ if ( typeof elem === "number" ) elem += ''; @@ -933,7 +934,7 @@ jQuery.extend({ }); // Trim whitespace, otherwise indexOf won't work as expected - var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div"); + var tags = jQuery.trim( elem ).toLowerCase(); var wrap = // option or optgroup @@ -1009,15 +1010,20 @@ jQuery.extend({ ret = jQuery.merge( ret, elem ); }); + + // Clean up + div.innerHTML = ""; if ( fragment ) { for ( var i = 0; ret[i]; i++ ) { - if ( jQuery.nodeName( ret[i], "script" ) ) { - ret[i].parentNode.removeChild( ret[i] ); + elem = ret[i]; + if ( jQuery.nodeName( elem, "script" ) ) { + if( elem.parentNode ) + elem.parentNode.removeChild( elem ); } else { - if ( ret[i].nodeType === 1 ) - ret = jQuery.merge( ret, ret[i].getElementsByTagName("script")); - fragment.appendChild( ret[i] ); + if ( elem.nodeType === 1 ) + ret = jQuery.merge( ret, elem.getElementsByTagName("script")); + fragment.appendChild( elem ); } } @@ -1280,8 +1286,10 @@ jQuery.each({ jQuery.className.remove( this, classNames ); }, - toggleClass: function( classNames ) { - jQuery.className[ jQuery.className.has( this, classNames ) ? "remove" : "add" ]( this, classNames ); + toggleClass: function( classNames, state ) { + if( typeof state !== "boolean" ) + state = !jQuery.className.has( this, classNames ); + jQuery.className[ state ? "add" : "remove" ]( this, classNames ); }, remove: function( selector ) {