diff --git a/index.js b/index.js index 3688a91..c9499ad 100644 --- a/index.js +++ b/index.js @@ -31,6 +31,7 @@ module.exports = Delegator function Delegator(opts) { opts = opts || {} + var additionalEvents = opts.listenTo || []; var document = opts.document || globalDocument var cacheKey = document[cacheTokenKey] @@ -47,9 +48,10 @@ function Delegator(opts) { new DOMDelegator(document) } + var events = commonEvents.concat(additionalEvents); if (opts.defaultEvents !== false) { - for (var i = 0; i < commonEvents.length; i++) { - delegator.listenTo(commonEvents[i]) + for (var i = 0; i < events.length; i++) { + delegator.listenTo(events[i]) } } diff --git a/test/dom-delegator.js b/test/dom-delegator.js index b72baae..8b565af 100644 --- a/test/dom-delegator.js +++ b/test/dom-delegator.js @@ -79,3 +79,28 @@ test("delegator with no args", function (assert) { assert.end() }) }) + +test("delegator with listenTo", function (assert) { + var elem = h("div") + document.body.appendChild(elem) + + Delegator({ + listenTo: ["mouseout"] + }) + var values = [] + + addEvent(elem, "mouseout", function (ev) { + values.push(ev) + }) + + var ev = createEvent("mouseout") + elem.dispatchEvent(ev) + + setImmediate(function () { + assert.equal(values.length, 1) + assert.equal(values[0].target, elem) + + document.body.removeChild(elem) + assert.end() + }) +});