2013-07-24 2 views
2

У меня есть две дивы включены друг в друга:Пустой родительский 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 :) –

Смежные вопросы