diff --git a/src/js/lib/event.js b/src/js/lib/event.js new file mode 100644 index 0000000..9fec68e --- /dev/null +++ b/src/js/lib/event.js @@ -0,0 +1,11 @@ +/* Copyright (c) 2015 Hyunje Alex Jun and other contributors + * Licensed under the MIT License + */ +'use strict'; + +exports.once = function (element, eventName, handler) { + element.addEventListener(eventName, function (e) { + element.removeEventListener(eventName, handler, false); + handler(e); + }, false); +}; diff --git a/src/js/plugin/ps.js b/src/js/plugin/ps.js index 4db586a..1b10f5f 100644 --- a/src/js/plugin/ps.js +++ b/src/js/plugin/ps.js @@ -6,6 +6,7 @@ var cls = require('../lib/class') , d = require('../lib/dom') , defaultSettings = require('./default-setting') + , evt = require('../lib/event') , eventClassFactory = require('../lib/event-class') , h = require('../lib/helper'); @@ -227,7 +228,7 @@ module.exports = function (element, settingOrCommand) { cls.add(element, 'ps-in-scrolling'); $(ownerDocument).bind(eventClass('mousemove'), mouseMoveHandler); - $(ownerDocument).one(eventClass('mouseup'), mouseUpHandler); + evt.once(ownerDocument, 'mouseup', mouseUpHandler); e.stopPropagation(); e.preventDefault(); @@ -259,7 +260,7 @@ module.exports = function (element, settingOrCommand) { cls.add(element, 'ps-in-scrolling'); $(ownerDocument).bind(eventClass('mousemove'), mouseMoveHandler); - $(ownerDocument).one(eventClass('mouseup'), mouseUpHandler); + evt.once(ownerDocument, 'mouseup', mouseUpHandler); e.stopPropagation(); e.preventDefault();