fix:jqLite: Fix binding to more events separated by space

The var eventHandler was defined outside forEach loop, so registering more
events caused calling listeners registered by the last one.

Regression:
elm.bind('click keyup', callback1);
elm.bind('click', callback2);
elm.bind('keyup', callback3);

Firing click event would have executed callback1, callback3 !
This commit is contained in:
Vojta Jina
2011-07-08 01:55:47 +02:00
committed by Igor Minar
parent bb39d34279
commit 9ee9ca13da
2 changed files with 19 additions and 3 deletions

View File

@@ -331,6 +331,23 @@ describe('jqLite', function(){
browserTrigger(b, 'click');
expect(log).toEqual('click on: A;click on: B;');
});
it('should bind to all events separated by space', function() {
var elm = jqLite(a),
callback = jasmine.createSpy('callback');
elm.bind('click keypress', callback);
elm.bind('click', callback);
browserTrigger(a, 'click');
expect(callback).toHaveBeenCalled();
expect(callback.callCount).toBe(2);
callback.reset();
browserTrigger(a, 'keypress');
expect(callback).toHaveBeenCalled();
expect(callback.callCount).toBe(1);
});
});