2012-03-17 143 views
13

如何刪除元素,但不包含內容裏面的那個元素?如何刪除一個元素,但不是內部的內容?

<a href="#"> 
    <span> 
     <img src="pic-1.jpg"/> 
    </span> 
</a> 

我想刪除封裝了圖像的span

這樣我就可以得到,

<a href="#"> 

    <img src="pic-1.jpg"/> 

</a> 
+0

[刪除HTML標籤,但保留的innerHTML](可能的重複http://stackoverflow.com/questions/4232961/remove-a-html-tag-but-keep-the-innerhtml ) – Dzyann 2017-03-01 13:18:40

回答

31

你需要unwrap

$('img').unwrap(); 
+0

這就是fab fab!謝謝! – laukok 2012-03-17 18:34:33

+0

哦,功能很好。 +1爲實際搜索,而不是做我做的。 – 2012-03-17 18:34:51

+0

我知道這是問答老,但解開文字呢?解開一個元素是可能的,但純文本怎麼樣? – 2014-08-21 10:23:52

4

jQuery的功能unwrap()是你在找什麼:

取下集的父母來自DOM的匹配元素,將匹配元素留在它們的位置。

查看the API doc page瞭解更多信息。

+0

非常感謝! :-) – laukok 2012-03-17 18:34:44

1

你必須修改你的HTML架構的位位置:

<a href="#" id="my_href"> 
    <span id="my_span"> 
     <img src="pic-1.jpg"/> 
    </span> 
</a> 

jQuery的解決方案:

$("#my_href").html($("#my_span").html()); 

非jQuery的解決方案:

document.getElementById("my_href").innerHTML = document.getElementById("my_span").innerHTML; 
+3

像這樣使用HTML通常是一種不好的做法。你正在銷燬和重新創建節點,而不是簡單地重新定位節點,並刪除節點。它還會銷燬任何處理程序或與'img'元素相關的其他數據。 – 2012-03-17 18:40:37

+2

啊,真的嗎?好的,那麼我將在未來避免這種情況。 :) – 2012-03-17 18:41:49

+0

這是**不** ** jQuery解決方案! – gdoron 2012-03-17 18:46:54

7
$(document).ready(function(){ 
    $span = $('span'); 
    $span.replaceWith($span.html()); 
}); 

見例如http://jsfiddle.net/vikastyagi87/Xaa39/6/

+0

我認爲這是最完整的答案,因爲它也適用於展開文本(不僅僅是DOM元素) – viery365 2017-03-29 02:25:35

相關問題