Ok, I figured it out. The source is simple enough, it does:
on: function(t, e) { for (var n = t.split(" "), i = 0; n.length > i; i++) this.element.addEventListener(n[i], e, !1); return this },off: function(t, e) { for (var n = t.split(" "), i = 0; n.length > i; i++) this.element.removeEventListener(n[i], e, !1); return this }
Note (other than bad documentation) that e is a callback function in the on event, so you do:
this.element.addEventListener("touch", function() {
But on deletion, you do not pass the callback so you do:
this.element.removeEventListener("touch", undefined, !1);
So, the browser does not know that the witch function is trying to untie, you can fix it without using anonymous functions, as I did in:
Fiddle
For more information: Javascript removeEventListener not working
source share