diff --git a/src/standard/events.html b/src/standard/events.html
index 86a51a14c9..926c31b311 100644
--- a/src/standard/events.html
+++ b/src/standard/events.html
@@ -80,8 +80,12 @@
* @param {string} methodName Name of handler method on `this` to call.
*/
listen: function(node, eventName, methodName) {
- this._listen(node, eventName,
- this._createEventHandler(node, eventName, methodName));
+ var handler = this._recallEventHandler(this, eventName, node, methodName);
+ // reuse cache'd handler
+ if (!handler) {
+ handler = this._createEventHandler(node, eventName, methodName);
+ }
+ this._listen(node, eventName, handler);
},
_boundListenerKey: function(eventName, methodName) {
@@ -140,6 +144,7 @@
anymore.
*/
unlisten: function(node, eventName, methodName) {
+ // leave handler in map for cache purposes
var handler = this._recallEventHandler(this, eventName, node, methodName);
if (handler) {
this._unlisten(node, eventName, handler);