var forEachEls = require("../foreach-els") module.exports = function(els, events, opts) { events = (typeof events === "string" ? events.split(" ") : events) events.forEach(function(e) { var event // = new CustomEvent(e) // doesn't everywhere yet event = document.createEvent("HTMLEvents") event.initEvent(e, true, true) event.eventName = e if (opts) { Object.keys(opts).forEach(function(key) { event[key] = opts[key] }) } forEachEls(els, function(el) { var domFix = false if (!el.parentNode) { // THANKS YOU IE (9/10//11 concerned) // dispatchEvent doesn't work if element is not in the dom domFix = true document.body.appendChild(el) } el.dispatchEvent(event) if (domFix) { el.parentNode.removeChild(el) } }) }) }