diff --git a/addons/web_editor/static/src/js/rte.js b/addons/web_editor/static/src/js/rte.js
index 0e1f5a61d5a992b41ec7d67b9b9d1d92b9ca7992..8ba34b8866aeabba33c561e6aa2444f961bdf30a 100644
--- a/addons/web_editor/static/src/js/rte.js
+++ b/addons/web_editor/static/src/js/rte.js
@@ -316,16 +316,15 @@ var RTE = Widget.extend({
                 $node.addClass('o_is_inline_editable');
             }
 
-            // start element observation
-            $node.one('content_changed', function () {
-                $(this).addClass('o_dirty');
-            });
-
             $node.data('initInnerHTML', $node.html());
         });
 
-        $(document).on('content_changed', '.o_editable', function () {
+        // start element observation
+        $(document).on('content_changed', '.o_editable', function (event) {
             self.trigger('change', this);
+            if(!$(this).hasClass('o_dirty')) {
+                $(this).addClass('o_dirty');
+            }
         });
 
         $('#wrapwrap, .o_editable').on('click', '*', this, this.onClick);