2011-01-13 4 views
3

У меня есть 3 divs, и я хочу заменить первый div открывающим тегом другого div, а третий - закрывающим тегом. Это то, что я имел в виду:replaceWith автоматически закрывает тег

<div>1</div> 
<div>2</div> 
<div>3</div> 

Когда я попытался заменить (используя ReplaceWith()) первый DIV с <div class="foo"> и третий с </div>, JQuery несколько извратить как:

<div class="foo"></div> 
<div>2</div> 
</div> 

Пока что Я на самом деле хочу это:

<div class="foo"> 
<div>2</div> 
</div> 

Спасибо заранее,

ответ

2

Вы должны работать со всеми элементами, а не с фрагментами кода HTML. Еще один способ думать о нем:

// Get the div you want 
var good = $('div:eq(1)'); 
// Remove the others 
$('div').not(good).remove(); 
// Wrap the div you want 
good.wrap('<div class="foo">'); 

Если имеется несколько дивы между первым и последним, Вы можете сделать это:

$('div:first').replaceWith('<div class="foo">'); 
$('div.foo').nextAll('div').appendTo('div.foo'); 
$('div.foo :last').remove(); 

См демо: http://jsfiddle.net/TBMHt/

+0

Но в этом случае Я не знаю, что и сколько находится между двумя div, чтобы метод не мог использоваться. Есть ли способ найти то, что находится между двумя div? – Warrantica

+0

@Warrantica, добавлена ​​альтернатива для этого случая;) –

+0

это, похоже, работает, спасибо! знак равно – Warrantica