From 826bb9845ffdbd11be427aad3ffa1f7d4a650eab Mon Sep 17 00:00:00 2001 From: Ulrich-Matthias Schäfer Date: Tue, 27 Feb 2018 12:12:19 +0100 Subject: fixed error that listener was strangely defined even if function was called without --- src/event.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/event.js b/src/event.js index f0d0e0c..6408e88 100644 --- a/src/event.js +++ b/src/event.js @@ -56,12 +56,16 @@ SVG.on = function (node, events, listener, binding, options) { // Add event unbinder in the SVG namespace SVG.off = function (node, events, listener, options) { var n = node instanceof SVG.Element ? node.node : node + var listenerId + if (!n.instance) return - // make a precheck for a valid listener here to avoid repetition in the loop - if (listener) { - if (typeof listener === 'function') listener = listener._svgjsListenerId - if (!listener) return + // listener can be a function or a number + if (typeof listener === 'function') { + listenerId = listener._svgjsListenerId + if (!listenerId) return + } else { + listenerId = listener } var bag = n.instance.events @@ -71,13 +75,13 @@ SVG.off = function (node, events, listener, options) { var ns = event && event.split('.')[1] var namespace - if (listener) { + if (listenerId) { // remove listener reference if (bag[ev] && bag[ev][ns || '*']) { - // remove listener - n.removeEventListener(ev, bag[ev][ns || '*'][listener], options || false) + // removeListener + n.removeEventListener(ev, bag[ev][ns || '*'][listenerId], options || false) - delete bag[ev][ns || '*'][listener] + delete bag[ev][ns || '*'][listenerId] } } else if (ev && ns) { // remove all listeners for a namespaced event @@ -118,6 +122,7 @@ SVG.extend(SVG.Element, { // Unbind event from listener off: function (event, listener) { SVG.off(this.node, event, listener) + return this }, dispatch: function (event, data) { // Dispatch event -- cgit v1.2.3