Replace element and preserve attributes

dom, jquery, replacewith

Solution

You have to loop on your element attributes :

$('span[data-type="yesno"]').replaceWith(function(){
   $li = $("<li>", {html: $(this).html()});
   $.each(this.attributes, function(i, attribute){
        $li.attr(attribute.name, attribute.value);
  });
  return $li;
})

Problem

The following almost works in replace all instances of `span[data-type="yesno"]` with lis, but I'd like to also preserve the attributes, classes, etc. Is there a way to carry over the attributes in the same way as the html? ``` $('span[data-type="yesno"]').replaceWith(function(){ return $("<li>", {html: $(this).html()}); }) ```

Original source