Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit bdd4e98

Browse files
ajoslinIgorMinar
authored andcommitted
fix(jqLite): support space-seperated events in off
Closes #3256
1 parent f274c0a commit bdd4e98

File tree

2 files changed

+59
-6
lines changed

2 files changed

+59
-6
lines changed

src/jqLite.js

+8-6
Original file line numberDiff line numberDiff line change
@@ -207,12 +207,14 @@ function JQLiteOff(element, type, fn) {
207207
delete events[type];
208208
});
209209
} else {
210-
if (isUndefined(fn)) {
211-
removeEventListenerFn(element, type, events[type]);
212-
delete events[type];
213-
} else {
214-
arrayRemove(events[type], fn);
215-
}
210+
forEach(type.split(' '), function(type) {
211+
if (isUndefined(fn)) {
212+
removeEventListenerFn(element, type, events[type]);
213+
delete events[type];
214+
} else {
215+
arrayRemove(events[type], fn);
216+
}
217+
});
216218
}
217219
}
218220

test/jqLiteSpec.js

+51
Original file line numberDiff line numberDiff line change
@@ -947,6 +947,31 @@ describe('jqLite', function() {
947947
});
948948

949949

950+
it('should deregister all listeners for types separated by spaces', function() {
951+
var aElem = jqLite(a),
952+
clickSpy = jasmine.createSpy('click'),
953+
mouseoverSpy = jasmine.createSpy('mouseover');
954+
955+
aElem.on('click', clickSpy);
956+
aElem.on('mouseover', mouseoverSpy);
957+
958+
browserTrigger(a, 'click');
959+
expect(clickSpy).toHaveBeenCalledOnce();
960+
browserTrigger(a, 'mouseover');
961+
expect(mouseoverSpy).toHaveBeenCalledOnce();
962+
963+
clickSpy.reset();
964+
mouseoverSpy.reset();
965+
966+
aElem.off('click mouseover');
967+
968+
browserTrigger(a, 'click');
969+
expect(clickSpy).not.toHaveBeenCalled();
970+
browserTrigger(a, 'mouseover');
971+
expect(mouseoverSpy).not.toHaveBeenCalled();
972+
});
973+
974+
950975
it('should deregister specific listener', function() {
951976
var aElem = jqLite(a),
952977
clickSpy1 = jasmine.createSpy('click1'),
@@ -974,6 +999,32 @@ describe('jqLite', function() {
974999
browserTrigger(a, 'click');
9751000
expect(clickSpy2).not.toHaveBeenCalled();
9761001
});
1002+
1003+
1004+
it('should deregister specific listener for multiple types separated by spaces', function() {
1005+
var aElem = jqLite(a),
1006+
masterSpy = jasmine.createSpy('master'),
1007+
extraSpy = jasmine.createSpy('extra');
1008+
1009+
aElem.on('click', masterSpy);
1010+
aElem.on('click', extraSpy);
1011+
aElem.on('mouseover', masterSpy);
1012+
1013+
browserTrigger(a, 'click');
1014+
browserTrigger(a, 'mouseover');
1015+
expect(masterSpy.callCount).toBe(2);
1016+
expect(extraSpy).toHaveBeenCalledOnce();
1017+
1018+
masterSpy.reset();
1019+
extraSpy.reset();
1020+
1021+
aElem.off('click mouseover', masterSpy);
1022+
1023+
browserTrigger(a, 'click');
1024+
browserTrigger(a, 'mouseover');
1025+
expect(masterSpy).not.toHaveBeenCalled();
1026+
expect(extraSpy).toHaveBeenCalledOnce();
1027+
});
9771028
});
9781029

9791030

0 commit comments

Comments
 (0)