diff --git a/misc/states.js b/misc/states.js
index 6d98da8..ea20b9d 100644
--- a/misc/states.js
+++ b/misc/states.js
@@ -305,12 +305,7 @@ states.Trigger = function (args) {
 
   if (this.state in states.Trigger.states) {
     this.element = $(this.selector);
-
-    // Only call the trigger initializer when it wasn't yet attached to this
-    // element. Otherwise we'd end up with duplicate events.
-    if (!this.element.data('trigger:' + this.state)) {
-      this.initialize();
-    }
+    this.initialize();
   }
 };
 
@@ -338,7 +333,7 @@ states.Trigger.prototype = {
     var oldValue = valueFn.call(this.element);
 
     // Attach the event callback.
-    this.element.bind(event, $.proxy(function (e) {
+    this.element.unbind(event + '.statesnamespace').bind(event + '.statesnamespace', $.proxy(function (e) {
       var value = valueFn.call(this.element, e);
       // Only trigger the event if the value has actually changed.
       if (oldValue !== value) {
