diff --git a/addons/web/static/src/js/corelib.js b/addons/web/static/src/js/corelib.js index 6c7fd539b38..42e549b5ca1 100644 --- a/addons/web/static/src/js/corelib.js +++ b/addons/web/static/src/js/corelib.js @@ -706,13 +706,24 @@ instance.web.Widget = instance.web.Class.extend(instance.web.WidgetMixin, { if (this.className) { attrs['class'] = this.className; } $el = $(this.make(this.tagName, attrs)); } + this.replaceElement($el); + }, + + /** + * Re-sets the widget's root element and replaces the old root element + * (if any) by the new one in the DOM. + * + * @param {HTMLElement | jQuery} $el + * @returns {*} this + */ + replaceElement: function ($el) { var $oldel = this.$el; this.setElement($el); if ($oldel && !$oldel.is(this.$el)) { $oldel.replaceWith(this.$el); } + return this; }, - /** * Re-sets the widget's root element (el/$el/$element). * @@ -723,7 +734,7 @@ instance.web.Widget = instance.web.Class.extend(instance.web.WidgetMixin, { * element in the DOM * * @param {HTMLElement | jQuery} element new root element for the widget - * @return {*} + * @return {*} this */ setElement: function (element) { if (this.$el) { diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js index c9015220ba7..b86b0534e3b 100644 --- a/addons/web/static/src/js/coresetup.js +++ b/addons/web/static/src/js/coresetup.js @@ -26,8 +26,7 @@ instance.web.OldWidget = instance.web.Widget.extend({ renderElement: function() { var rendered = this.render(); if (rendered) { - var $el = $(rendered); - this.setElement($el); + this.replaceElement($(rendered)); } return this; },