如何用另一个元素替换元素?

问题描述:

我有这样的HTML结构:如何用另一个元素替换元素?

<div>something</div> 
<p>this is a paragraph</p> 

现在我想更换<p><span>。像这样的东西;

<div>something</div> 
<span>this is a span</span> 

我想是这样的:

$("div").siblings("p"). /* replace with "<span>this is a span</span>" */ 

注:没有说<p>周围的任何包装。所以我不能使用.html()


那么,这样做有可能吗?

考虑给定的HTML,你可以这样来做:

jQuery的.replaceWith()方法从DOM移除相关内容,并插入它的位置与单个调用新的内容。考虑这个DOM结构:

<div class="container"> 
    <div class="inner first">Hello</div> 
    <div class="inner second">And</div> 
    <div class="inner third">Goodbye</div> 
</div> 

第二内<div>可以与指定的HTML取代:

$("div.second").replaceWith("<h2>New heading</h2>"); 

这导致以下结构:

<div class="container"> 
    <div class="inner first">Hello</div> 
    <h2>New heading</h2> 
    <div class="inner third">Goodbye</div> 
</div> 

参见http://api.jquery.com/replacewith/

你可以使用这个:

$('p').replaceWith(function(){ 
    return $("<span />", {html: $(this).html()}); 
}); 

看到提琴:http://jsfiddle.net/DIRTY_SMITH/k2swf/592/