]> source.dussan.org Git - jquery.git/commitdiff
Ref gh-1117: Don't stop on a falsy value in buildFragment. Close gh-1124.
authorOleg <markelog@gmail.com>
Wed, 9 Jan 2013 09:23:34 +0000 (13:23 +0400)
committerRichard Gibson <richard.gibson@gmail.com>
Wed, 9 Jan 2013 14:52:01 +0000 (09:52 -0500)
src/manipulation.js
test/unit/manipulation.js

index c85caa060eb8489267d259c53e609d66eaa73b17..5b5d8aec4a7adcf69dd1456ec14b70d70f57618e 100644 (file)
@@ -424,10 +424,14 @@ jQuery.extend({
        buildFragment: function( elems, context, scripts, selection ) {
                var elem, tmp, tag, wrap, contains, j,
                        i = 0,
+                       l = elems.length,
                        fragment = context.createDocumentFragment(),
                        nodes = [];
 
-               while ( ( elem = elems[ i++ ] ) || elem === 0 ) {
+               for ( ; i < l; i++ ) {
+                       elem = elems[ i ];
+
+                       if ( elem || elem === 0 ) {
 
                                // Add nodes directly
                                if ( jQuery.type( elem ) === "object" ) {
@@ -461,6 +465,7 @@ jQuery.extend({
                                        // Support: Webkit, IE
                                        tmp.textContent = "";
                                }
+                       }
                }
 
                // Remove wrapper from fragment
@@ -468,7 +473,6 @@ jQuery.extend({
 
                i = 0;
                while ( (elem = nodes[ i++ ]) ) {
-                       contains = jQuery.contains( elem.ownerDocument, elem );
 
                        // #4087 - If origin and destination elements are the same, and this is
                        // that element, do not do anything
@@ -476,6 +480,8 @@ jQuery.extend({
                                continue;
                        }
 
+                       contains = jQuery.contains( elem.ownerDocument, elem );
+
                        // Append to fragment
                        tmp = getAll( fragment.appendChild( elem ), "script" );
 
@@ -486,7 +492,6 @@ jQuery.extend({
 
                        // Capture executables
                        if ( scripts ) {
-
                                j = 0;
                                while ( (elem = tmp[ j++ ]) ) {
                                        if ( rscriptType.test( elem.type || "" ) ) {
index d2bec12f5664f093c82f1eb3cf893fa118bd508a..e933a7affe0d0567d14ff499eac346c543795c16 100644 (file)
@@ -395,7 +395,7 @@ var testAppendForObject = function( valueObj, isFragment ) {
 
 var testAppend = function( valueObj ) {
 
-       expect( 77 );
+       expect( 78 );
 
        testAppendForObject( valueObj, false );
        testAppendForObject( valueObj, true );
@@ -469,13 +469,13 @@ var testAppend = function( valueObj ) {
        jQuery("#table colgroup").append( valueObj("<col/>") );
        equal( jQuery("#table colgroup col").length, 1, "Append col" );
 
-
        jQuery("#form")
                .append( valueObj("<select id='appendSelect1'></select>") )
                .append( valueObj("<select id='appendSelect2'><option>Test</option></select>") );
        t( "Append Select", "#appendSelect1, #appendSelect2", [ "appendSelect1", "appendSelect2" ] );
 
        equal( "Two nodes", jQuery("<div />").append( "Two", " nodes" ).text(), "Appending two text nodes (#4011)" );
+       equal( jQuery("<div />").append( "1", "", 3 ).text(), "13", "If median is false-like value, subsequent arguments should not be ignored" );
 
        // using contents will get comments regular, text, and comment nodes
        j = jQuery("#nonnodes").contents();