JQuery:用另一组替换元素集的优雅方法?
我有一堆DOM喜欢
我想用一套新东西替换它
哪个将通过Ajax获取。 我的问题是:最好的方法是什么?
$.replaceWith
不能完全按照我的意愿$.replaceWith
,因为我最终得到了新stuff
多个副本。
我可以保证所有的stuff
都在一个连续的块中,所以我可以在旧stuff
的最后一个元素(或第一个元素之前)放入一些占位符,删除旧的stuff
,并用新的stuff
。
然而,这似乎相当迂回而且不优雅。 是否有任何聪明的方法,删除所有旧的stuff
,并一次性放入一个新的stuff
副本?
编辑:我也想这样做而不使用任何容器div。 使用容器div可以在上面的情况下工作,但在某些情况下会失败,比如当stuff
在
如果我想用另一组行替换标记为stuff
的行,可能更多,可能更少,那么我无法将它们很好地放入容器中而不会破坏HTML,因为只能包含
$('#outerdiv').empty().append(newContent);
与.html()
不同,无论newContent
是HTML字符串还是现有DOM结构,都可以使用。
如果要替换多个元素但需要保留其兄弟姐妹,则可以执行以下操作:
$('.stuff').first().before(newContent).end().remove();
即获取第一个.stuff
元素,在其前面添加新内容,然后删除所有.stuff
元素。
是的: $('#tagetDiv').html(newContent)
一种方法是使用wrapAll
:
$('.stuff').wrapAll('').parent().replaceWith('');
我不确定它是否通过了“优雅”测试,但无论包含元素中是否有任何其他内容,它都能正常工作。
尽管如此,这对于一个简单的问题来说似乎是一个非常复杂的解决方案。 简单的解决方案是将元素包装在一个包含元素中; 如果像你说的那样,你可以保证他们永远在一起,这应该不是问题。