Jquery删除字符串但保留结构

时间:2013-02-07 16:58:02

标签: jquery replace blogs

我正在退出a previous post,专门讨论从元素中删除字符串的问题。这样做的代码是:

  $this.text( $this.text().replace("text to strip out", "") );

我已成功删除了“类别:”

文本

仅供参考:这是一个博客页面,其中包含动态添加的类别。剥离“categories:”之前的HTML结构:

<container>
   <div class="categories">
     "categories: "  //This is what I strip out with above code
     <a href = "...">Category Name</a> //This is a linked category name
   </div>
</container>

问题在于,当我删除“类别:”时,它也会删除并留下一个未链接的“类别名称”

在jquery运行之后,html看起来像这样:

 <container>
   <div class="categories">Category Name</div>
</container>

我需要保持链接处于活动状态,因为我希望用户能够单击“类别名称”以保持链接。

3 个答案:

答案 0 :(得分:0)

一种方法,不知道它是否是最好的方法,是将锚元素保存为javascript变量。然后在删除要删除的内容后,将该锚点重新注入。

答案 1 :(得分:0)

试试这个......

$("div.categories").each(function() {
    var $this = $(this);
    $this.html($this.html().replace("categories: ", ""));
});

答案 2 :(得分:0)

要删除textNode,您需要使用contents()来检索它们,然后是filter()remove()的组合,如下所示:

$('.categories')
    .contents()
    .filter(function() { return this.nodeType == 3; })
    .remove();

Example fiddle

请注意,这将删除所有直接子textNodes。如果要按节点文本进行过滤,请相应地修改filter()函数。