There is a clean JavaScript solution, FWIW:
Array.prototype.forEach.call(el.getElementsByTagName('span'), function(element){ var children; if( ! element.id){ children = document.createDocumentFragment(); while(element.firstChild){ children.appendChild(element.firstChild); } element.parentElement.replaceChild(children, element); } });
Doing this work in browsers that don't have Array.prototype.forEach is left to the user to read.
source share