replaceWith自动关闭标签

3
我有三个div,我想用另一个div的开标签替换第一个div,用闭标签替换第三个div。我的意思是这样的:
<div>1</div>
<div>2</div>
<div>3</div>

当我尝试使用replaceWith()方法将第一个div替换为<div class="foo">,并将第三个div替换为</div>时,jQuery会有些误解:

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

虽然我真正想要的是:

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

事先感谢您的帮助,

相关内容与IT技术有关。
1个回答

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,您可以这样做:
$('div:first').replaceWith('<div class="foo">');
$('div.foo').nextAll('div').appendTo('div.foo');
$('div.foo :last').remove();

查看演示:http://jsfiddle.net/TBMHt/


但在这种情况下,我不知道两个div之间有什么或有多少个,所以那种方法不能使用。有没有一种方法可以找到两个div之间的内容? - Warrantica
@Warrantica,为那种情况添加了一种替代方案 ;) - David Tang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接