Index: www/misc/states.js
===================================================================
--- www/misc/states.js
+++ www/misc/states.js
@@ -105,7 +105,7 @@
         this.values[selector][state.name] = null;
 
         // Monitor state changes of the specified state for this dependee.
-        $(selector).bind('state:' + state, $.proxy(function (e) {
+        $(selector + ':not(.states-processed)').bind('state:' + state, $.proxy(function (e) {
           this.update(selector, state, e.value);
         }, this));
 
@@ -154,6 +154,7 @@
     // Only act when the 'new' value is actually new.
     if (value !== this.values[selector][state.name]) {
       this.values[selector][state.name] = value;
+      $(selector).addClass('states-processed');
       this.reevaluate();
     }
   },
