From 9ee9ca13da3883d06733637f9048a83d94e6f1f8 Mon Sep 17 00:00:00 2001 From: Vojta Jina Date: Fri, 8 Jul 2011 01:55:47 +0200 Subject: 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 ! --- test/jqLiteSpec.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'test/jqLiteSpec.js') diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index 6794c4e0..fafe7f2a 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -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); + }); }); -- cgit v1.2.3