Thanks for the comment. I considered that, but I was thinking it makes things a little cleaner/easier to maintain by using Gator objects. Only one object instance is created per element. Also it allows for chaining methods.
As for WeakMap, I wasn't even aware of that, looks awesome.
I think the point may be "Gator.on()" wouldn't need instances of anything allocated.
But then you lose chaining.