- // parents), we check if the new content satisfies the requirement
- // of a single top-level element, and only use the container created
- // above when it doesn't. For more information, please see
- // https://www.drupal.org/node/736066.
- if ($new_content.length !== 1 || $new_content.get(0).nodeType !== 1) {
- $new_content = $new_content_wrapped;
- }
-
// If removing content from the wrapper, detach behaviors first.
switch (method) {
case 'html':
@@ -1081,6 +1066,20 @@
if ($new_content.parents('html').length > 0) {
// Apply any settings from the returned JSON if available.
settings = response.settings || ajax.settings || drupalSettings;
+ // For legacy reasons, the effects processing code assumes that
+ // new_content consists of a single top-level element. Also, it has not
+ // been sufficiently tested whether attachBehaviors() can be successfully
+ // called with a context object that includes top-level text nodes.
+ // However, to give developers full control of the HTML appearing in the
+ // page, and to enable Ajax content to be inserted in places where DIV
+ // elements are not allowed (e.g., within TABLE, TR, and SPAN parents),
+ // we check if the new content satisfies the requirement of a single
+ // top-level element, and only use the container DIV created above when
+ // it doesn't. For more information, please see
+ // https://www.drupal.org/node/736066.
+ if ($new_content.length !== 1 || $new_content.get(0).nodeType !== 1) {
+ $new_content = $new_content.parent();
+ }
Drupal.attachBehaviors($new_content.get(0), settings);
}
},