替换元素并保留属性

6
以下内容几乎可以将所有 span[data-type="yesno"] 替换为 li,但我希望也能保留属性、类等。有没有一种方法可以以与 html 相同的方式传递属性?
$('span[data-type="yesno"]').replaceWith(function(){
    return $("<li>", {html: $(this).html()});
})

1
是的,但您需要迭代每个要保留的属性,并将其添加到传递给 $() 的属性列表中。 - Kevin B
@KevinB 难道我不是在上面做这个吗?因为它保留了每个 span 的独立 html。 - emsoff
@jboneca 是的,子元素可以,但是 span/li 上的属性不行。 - Kevin B
如果您知道 span 可能具有的属性(例如,仅限 id 或 class),最简单的方法是将这两个属性与 html 一起传递。如果它变化很大,您将不得不遍历属性。 - bagonyi
请尝试使用http://jsfiddle.net/arunpjohny/JNeb8/1/。 - Arun P Johny
显示剩余2条评论
1个回答

13
你需要在元素属性上进行循环:
$('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;
})

1
像我们所有人一样 ;) 如果答案适合您,请不要忘记将其标记为已接受。祝学习愉快! - OlivierH
在我能够接受之前,必须等待一段时间限制,干杯! - emsoff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接