diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/element.js | 1 | ||||
-rw-r--r-- | src/event.js | 30 |
2 files changed, 18 insertions, 13 deletions
diff --git a/src/element.js b/src/element.js index 3713aac..d3db4ba 100644 --- a/src/element.js +++ b/src/element.js @@ -4,6 +4,7 @@ SVG.Element = SVG.invent({ create: function(node) { // make stroke value accessible dynamically this._stroke = SVG.defaults.attrs.stroke + this._event = null // initialize data object this.dom = {} diff --git a/src/event.js b/src/event.js index 49a8d8d..32c2cc6 100644 --- a/src/event.js +++ b/src/event.js @@ -13,18 +13,18 @@ , 'touchleave' , 'touchend' , 'touchcancel' ].forEach(function(event) { - - // add event to SVG.Element + + // add event to SVG.Element SVG.Element.prototype[event] = function(f) { var self = this - - // bind event to element rather than element node + + // bind event to element rather than element node this.node['on' + event] = typeof f == 'function' ? function() { return f.apply(self, arguments) } : null - + return this } - + }) // Initialize listeners stack @@ -39,8 +39,8 @@ SVG.on = function(node, event, listener, binding) { , index = (SVG.handlerMap.indexOf(node) + 1 || SVG.handlerMap.push(node)) - 1 , ev = event.split('.')[0] , ns = event.split('.')[1] || '*' - - + + // ensure valid object SVG.listeners[index] = SVG.listeners[index] || {} SVG.listeners[index][ev] = SVG.listeners[index][ev] || {} @@ -48,7 +48,7 @@ SVG.on = function(node, event, listener, binding) { if(!listener._svgjsListenerId) listener._svgjsListenerId = ++SVG.listenerId - + // reference listener SVG.listeners[index][ev][ns][listener._svgjsListenerId] = l @@ -120,25 +120,29 @@ SVG.extend(SVG.Element, { // Bind given event to listener on: function(event, listener, binding) { SVG.on(this.node, event, listener, binding) - + return this } // Unbind event from listener , off: function(event, listener) { SVG.off(this.node, event, listener) - + return this } // Fire given event , fire: function(event, data) { - + // Dispatch event if(event instanceof Event){ this.node.dispatchEvent(event) }else{ - this.node.dispatchEvent(new CustomEvent(event, {detail:data})) + this.node.dispatchEvent(event = new CustomEvent(event, {detail:data, cancelable: true})) } + this._event = event return this } +, event: function() { + return this._event + } })
\ No newline at end of file |