tui-code-snippet
Version:
TOAST UI Utility: CodeSnippet
43 lines (35 loc) • 1.18 kB
JavaScript
/**
* @fileoverview Bind DOM event. this event will unbind after invokes.
* @author NHN FE Development Lab <dl_javascript@nhn.com>
*/
;
var forEachOwnProperties = require('../collection/forEachOwnProperties');
var isObject = require('../type/isObject');
var on = require('./on');
var off = require('./off');
/**
* Bind DOM event. this event will unbind after invokes.
* @param {HTMLElement} element - HTMLElement to bind events.
* @param {(string|object)} types - Space splitted events names or
* eventName:handler object.
* @param {(function|object)} handler - handler function or context for handler method.
* @param {object} [context] - context object for handler method.
* @memberof module:domEvent
*/
function once(element, types, handler, context) {
/**
* Event handler for one time.
*/
function onceHandler() {
handler.apply(context || element, arguments);
off(element, types, onceHandler, context);
}
if (isObject(types)) {
forEachOwnProperties(types, function(fn, type) {
once(element, type, fn, handler);
});
return;
}
on(element, types, onceHandler, context);
}
module.exports = once;