mirror of
https://github.com/jashkenas/backbone.git
synced 2026-04-30 03:00:06 -04:00
Merge pull request #1041 from braddunbar/undelegate
Fix #986 - Undelegate events before changing `el`.
This commit is contained in:
@@ -1138,6 +1138,7 @@
|
||||
// Change the view's element (`this.el` property), including event
|
||||
// re-delegation.
|
||||
setElement: function(element, delegate) {
|
||||
if (this.$el) this.undelegateEvents();
|
||||
this.$el = (element instanceof $) ? element : $(element);
|
||||
this.el = this.$el[0];
|
||||
if (delegate !== false) this.delegateEvents();
|
||||
|
||||
12
test/view.js
12
test/view.js
@@ -186,4 +186,16 @@ $(document).ready(function() {
|
||||
ok(view.$el === $el);
|
||||
});
|
||||
|
||||
test("#986 - Undelegate before changing element.", 1, function() {
|
||||
var a = $('<button></button>');
|
||||
var b = $('<button></button>');
|
||||
var View = Backbone.View.extend({
|
||||
events: {click: function(e) { ok(view.el === e.target); }}
|
||||
});
|
||||
var view = new View({el: a});
|
||||
view.setElement(b);
|
||||
a.trigger('click');
|
||||
b.trigger('click');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user