SVG.A = SVG.invent({ // Initialize node create: 'a' // Inherit from , inherit: SVG.Container // Add class methods , extend: { // Link url to: function(url) { return this.attr('href', url, SVG.xlink) } // Link show attribute , show: function(target) { return this.attr('show', target, SVG.xlink) } // Link target attribute , target: function(target) { return this.attr('target', target) } } // Add parent method , construct: { // Create a hyperlink element link: function(url) { return this.put(new SVG.A).to(url) } } }) SVG.extend(SVG.Element, { // Create a hyperlink element linkTo: function(url) { var link = new SVG.A if (typeof url == 'function') url.call(link, link) else link.to(url) return this.parent().put(link).put(this) } })