Я также выложу ответ, так как мне потребовалось некоторое время, чтобы сделать рабочую версию из поста Матиаса.
Проблемы, с которыми я столкнулся, заключались в том, что SVG требует особой осторожности, есть небольшие нюансы (jQuery не нравится), но вот код, который должен работать и для SVG:
$.fn.removeAttrs = function(attrToRemove, attrValue) {
return this.each(function() {
var $this = $(this)[0];
var toBeRemoved = [];
_.each($this.attributes, function (attr) {
if (attr && attr.name.indexOf(attrToRemove) >= 0) {
if (attrValue && attr.value !== attrValue)
return;
toBeRemoved.push(attr.name);
}
});
_.each(toBeRemoved, function(attrName) {
$this.removeAttribute(attrName);
});
});
};
обратите внимание, что он использует подчеркивание, но вы можете заменить _.each на $ .each, я считаю.
Использование:
svgMapClone
.find('*')
.addBack()
.removeAttrs('svg-')
.removeAttrs('context-')
.removeAttrs('class', '')
.removeAttrs('data-target')
.removeAttrs('dynamic-cursor')
.removeAttrs('transform', 'matrix(1, 0, 0, 1, 0, 0)')
.removeAttrs("ng-");