remove all events with node.off()

This commit is contained in:
Лаврёнов Антон
2014-05-15 23:44:14 +08:00
parent 30cd5e6307
commit 16511a9aef
2 changed files with 21 additions and 1 deletions

View File

@@ -389,10 +389,16 @@
* node.off('click.foo');
*/
off: function(evtStr) {
var events = evtStr.split(SPACE),
var events = (evtStr || '').split(SPACE),
len = events.length,
n, t, event, parts, baseEvent, name;
if (!evtStr) {
// remove all events
for(t in this.eventListeners) {
this._off(t);
}
}
for(n = 0; n < len; n++) {
event = events[n];
parts = event.split(DOT);

View File

@@ -1761,6 +1761,20 @@ suite('Node', function() {
assert.equal(circle.eventListeners['click'], undefined);
assert.equal(circle.eventListeners['touch'], undefined);
// test remove all events
circle.on('click.kinetic', function() {
});
circle.on('click', function() {
});
circle.on('boo', function() {
});
assert.equal(circle.eventListeners['click'].length, 2);
assert.equal(circle.eventListeners['boo'].length, 1);
circle.off();
assert.equal(circle.eventListeners['boo'], undefined);
// should not remove kinetic listeners
assert.equal(circle.eventListeners['click'].length, 1);
stage.add(layer);
layer.add(circle);
layer.draw();