replaceWith 不会删除评论

replaceWith doesn't remove comments

我正在尝试用 jquery replaceWidth()

替换一块 HTML
<!-- content box -->
<div id="content-box">
  yo
</div>
<!-- /content box -->

像这样:

$('#content-box').replaceWith(response.box);

但后来我得到

<!-- content box -->
<!-- content box -->
<div id="content-box">
  yo
</div>
<!-- /content box -->
<!-- /content box -->

有没有办法让它也取代 HTML 评论? :P

那是因为评论在#content-boxdiv之外。

 <!-- content box : will not be replaced -->
 <div id="content-box">
    <!-- This comment will be replaced --> 
    yo                 
 </div>               
<!-- /content box : will not be replaced -->

评论不属于 content-box。他们是完全独立的兄弟姐妹。不是 children。我想最好的方法是从 parent.

中删除评论
$('#content-box').parent().html('').append(response.box);

如果您不想清除 parent HTML,您可以使用以下代码删除 parent 中的所有评论:

$('#content-box').parent().contents().each(function() {
    if(this.nodeType == 8) {
        $(this).remove()
    }
});

如果你想去掉评论 只在 response.box 中(据我所知),你可以使用这个:

$('#content-box').replaceWith(function(){
    return response.box.replace(/<!--(.*?)-->/ig, '');
});

上面的函数会改变这个:

<!-- content box -->
<div id="content-box">
    yo
</div>
<!-- /content box -->

进入此(单条评论):

<!-- content box -->
<div id="content-box">
    text from response.box
</div>
<!-- /content box -->