diff -u b/core/misc/ajax.js b/core/misc/ajax.js --- b/core/misc/ajax.js +++ b/core/misc/ajax.js @@ -1042,26 +1042,37 @@ var $responseDataWrapped = $('
').html(response.data); var $new_content = $(''); + var elementsReturned = $responseDataWrapped.contents().length; var createWrapper = function () { return $(''); }; - var wrapper = null; + var intermediateWrapper = null; $responseDataWrapped.contents().each(function (index, value) { - if (wrapper && value.nodeType !== 1) { - wrapper.append(value); + if (intermediateWrapper && value.nodeType !== 1) { + intermediateWrapper.append(value); } - if (!wrapper && value.nodeType !== 1) { - wrapper = createWrapper(); - wrapper.append(value); + if (!intermediateWrapper && value.nodeType !== 1) { + intermediateWrapper = createWrapper(); + intermediateWrapper.append(value); } - if (wrapper && value.nodeType === 1) { - $new_content.append(wrapper, value); - wrapper = null; + if (!intermediateWrapper && value.nodeType === 1) { + $new_content.append(value); + intermediateWrapper = null; + } + if (intermediateWrapper && value.nodeType === 1) { + $new_content.append(intermediateWrapper, value); + intermediateWrapper = null; } }); + // If we only had one element returned, and not an Node.ELEMENT_NODE + // we need to add it to $new_content + if (elementsReturned === 1) { + $new_content.append(intermediateWrapper); + } + $new_content = $new_content.children(); // If removing content from the wrapper, detach behaviors first. diff -u b/core/modules/system/tests/modules/ajax_test/src/Controller/AjaxTestController.php b/core/modules/system/tests/modules/ajax_test/src/Controller/AjaxTestController.php --- b/core/modules/system/tests/modules/ajax_test/src/Controller/AjaxTestController.php +++ b/core/modules/system/tests/modules/ajax_test/src/Controller/AjaxTestController.php @@ -55,7 +55,7 @@ // This is a regular render array; the keys do not have special meaning. switch ($type) { case 'pre-wrapped': - $markup = 'some more text
ok
'; + $markup = ' foo foo barsome string
final string
'; break; } $content = [ diff -u b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxTest.php --- b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxTest.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxTest.php @@ -92,7 +92,7 @@ $this->drupalGet('ajax-test/insert'); $this->clickLink('Link 1 (pre-wrapped)'); $assert->assertWaitOnAjaxRequest(); - $assert->responseContains('some string
final string
'); }