2013-07-24 212 views
2

我有兩個div包含一個在其他:空父DIV而不是孩子的div

<DIV id="DIV_1"> 
    parent_contents 
    parent_contents 

    <DIV id="DIV_2"> 
     child_contents 
     child_contents 
    </DIV> 
</DIV> 

我想刪除parent_contents,但不是child_contents。當我這樣做:

$('#DIV_1').remove(); 

我失去了孩子的內容...

+1

不僅如此,但你也失去了它們。 –

+1

@Diodeus,而不是派生,如果你編輯問題並糾正它會更好。 – Sid

+0

所以你想DIV_2仍然是DIV_1的子女,或者你想刪除DIV_1並保留DIV_2? –

回答

3

濾除textnodes並刪除它們:

$('#DIV_1').contents().filter(function() { 
    return this.nodeType === 3; 
}).remove(); 

FIDDLE

或只留下#DIV_2,濾除只是一個元素:

$('#DIV_1').contents().filter(function() { 
    return this.id != 'DIV_2'; 
}).remove(); 

FIDDLE

+0

我使用瞭解決方案2,即使我更願意保留DIV_1信息...但我重新加載內容,所以對我來說很好。非常感謝 – Zamboo

2

我敢肯定的最簡單方法之一是將DIV_2孩子的內容複製到一個變量,然後簡單地將其附加到DIV_1清空後。

jsFiddle DEMO

var $temp = $('#DIV_2'); 
$("#DIV_1").empty().append($temp); 
+1

請注意,這將刪除與元素,事件處理程序等有關的任何數據。 - > http://jsfiddle.net/RNakX/2/ – adeneo

+0

非常真實,沒有意識到! Touche @adeneo :) –