replaceWith不会删除评论

时间:2015-02-19 18:59:16

标签: javascript jquery html replacewith

我试图用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

2 个答案:

答案 0 :(得分:1)

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

 <!-- 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').parent().html('').append(response.box);

如果您不想清除父HTML,可以使用以下代码从父级删除所有注释:

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

答案 1 :(得分:0)

如果你想在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 -->