Browse Source

work around chrome and mutation observer bug. fixes #1099

Igor Vaynberg 12 years ago
parent
commit
78139a80ba
1 changed files with 10 additions and 3 deletions
  1. 10 3
      select2.js

+ 10 - 3
select2.js

@@ -961,12 +961,19 @@ the specific language governing permissions and limitations under the Apache Lic
 
             // mozilla and IE
             el.bind("propertychange.select2 DOMAttrModified.select2", sync);
+
+
+            // hold onto a reference of the callback to work around a chromium bug
+            if (this.mutationCallback === undefined) {
+                this.mutationCallback = function (mutations) {
+                    mutations.forEach(sync);
+                }
+            }
+
             // safari and chrome
             if (typeof WebKitMutationObserver !== "undefined") {
                 if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }
-                this.propertyObserver = new WebKitMutationObserver(function (mutations) {
-                    mutations.forEach(sync);
-                });
+                this.propertyObserver = new WebKitMutationObserver(this.mutationCallback);
                 this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });
             }
         },