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 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) } })