From: Brandon Aaron Date: Thu, 2 Nov 2006 18:53:40 +0000 (+0000) Subject: Fix jQuery.clean to work with Safari and DOM NodeLists X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=commitdiff_plain;h=4f92b3430119e734dea39ab4f4636e64d2c26903 Fix jQuery.clean to work with Safari and DOM NodeLists --- diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index c17d624..996ace8 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -1565,14 +1565,12 @@ jQuery.extend({ // Go to html and back, then peel off extra wrappers div.innerHTML = wrap[1] + s + wrap[2]; while ( wrap[0]-- ) div = div.firstChild; - - // Have to loop through the childNodes here to - // prevent a Safari crash with text nodes and /n characters - for ( var j = 0; j < div.childNodes.length; j++ ) - r.push( div.childNodes[j] ); + arg = div.childNodes; } - else if ( arg.length != undefined && !arg.nodeType ) // Handles Array, jQuery, DOM NodeList collections - for ( var n = 0; n < arg.length; n++ ) + + + if ( arg.length != undefined && ( (jQuery.browser.safari && typeof arg == 'function') || !arg.nodeType ) ) // Safari reports typeof on a DOM NodeList to be a function + for ( var n = 0; n < arg.length; n++ ) // Handles Array, jQuery, DOM NodeList collections r.push(arg[n]); else r.push( arg.nodeType ? arg : document.createTextNode(arg.toString()) );