diff --git a/src/bean.js b/src/bean.js index caa5e2b..6f1c73e 100644 --- a/src/bean.js +++ b/src/bean.js @@ -36,7 +36,9 @@ listener = W3C_MODEL ? function (element, type, fn, add) { element[add ? addEvent : removeEvent](type, fn, false); } : function (element, type, fn, add, custom) { - custom && add && (element['_on' + custom] = element['_on' + custom] || 0); + if (custom && add && element['_on' + custom] === null) { + element['_on' + custom] = 0; + } element[add ? attachEvent : detachEvent]('on' + type, fn); }, diff --git a/tests/tests.js b/tests/tests.js index 9a7183f..93897f7 100644 --- a/tests/tests.js +++ b/tests/tests.js @@ -1,4 +1,3 @@ -//stub this for ie crap if (!window.console) { window.console = { log: function () {}} } @@ -111,6 +110,12 @@ sink('add', function (test, ok) { Syn.click(el2); }); + test('add: shouldn\'t trigger event when adding additional custom event listeners', 0, function () { + var el = document.getElementById('input'); + bean.add(el, 'foo', function () {ok(true, 'additional custom event listeners trigger event 1')}); + bean.add(el, 'foo', function () {ok(true, 'additional custom event listeners trigger event 2')}); + }); + }) sink('fire', function (test, ok) {