Revert "Speed up method calls in delegateEvents and delegate"

This reverts commit 846de91c88.

Conflicts:
	backbone.js
This commit is contained in:
Adam Krebs
2014-02-21 10:00:48 -05:00
parent bde634fd6d
commit fc95eaefd2

View File

@@ -1075,7 +1075,6 @@
delegateEvents: function(events) { delegateEvents: function(events) {
if (!(events || (events = _.result(this, 'events')))) return this; if (!(events || (events = _.result(this, 'events')))) return this;
this.undelegateEvents(); this.undelegateEvents();
var _delegate = this._delegate;
for (var key in events) { for (var key in events) {
var method = events[key]; var method = events[key];
if (!_.isFunction(method)) method = this[events[key]]; if (!_.isFunction(method)) method = this[events[key]];
@@ -1083,8 +1082,7 @@
var match = key.match(delegateEventSplitter); var match = key.match(delegateEventSplitter);
var eventName = match[1], selector = match[2]; var eventName = match[1], selector = match[2];
method = method.bind && method.bind(this) || _.bind(method, this); this.delegate(eventName, selector, _.bind(method, this));
_delegate.call(this, eventName, selector, method);
} }
return this; return this;
}, },
@@ -1092,14 +1090,14 @@
// Add a single event listener to the element responding only to the // Add a single event listener to the element responding only to the
// optional `selector` or catches all `eventName` events. Subclasses can // optional `selector` or catches all `eventName` events. Subclasses can
// override this to utilize an alternative DOM event management API. // override this to utilize an alternative DOM event management API.
_delegate: function(eventName, selector, method) { delegate: function(eventName, selector, method) {
var $el = this.$el;
eventName += '.delegateEvents' + this.cid; eventName += '.delegateEvents' + this.cid;
if (!selector) { if (!selector) {
$el.on(eventName, method); this.$el.on(eventName, method);
} else { } else {
// `selector` is actually `method` in 2 argument form. // When `delegate` is called with two arguments, `selector` is actually
$el.on(eventName, selector, method); // the `method`
this.$el.on(eventName, selector, method);
} }
}, },