从dom中删除html元素

时间:2014-07-11 06:08:15

标签: jquery dom dom-manipulation

我正试图弄清楚如何使用jQuery删除破折号和冒号。有办法吗?到目前为止,我已经尝试了.empty.remove,但不幸的是,我无法让它工作。

<p class="meta">
     <strong>Author Name</strong>
     –                                <-- remove this
     <time>June 7, 2013</time>
     :                                <-- remove this
</p>

6 个答案:

答案 0 :(得分:2)

你可以使用......

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

jsFiddle

答案 1 :(得分:1)

试试这个:

$(function(){
   var $children = $('.meta').children();
   $('.meta').empty().append($children);
});

<强> Demo

答案 2 :(得分:0)

试试这个,

$(function(){
   $('p.meta').html($('p.meta').find('*'));
});

<强> Live Demo

或试试,

$(function(){
    $('p.meta').html(function(){ return $(this).find('*');});
});

<强> Alternative

已更新,如果您的子元素附加了事件,请使用contentsfilter之类的,

$(function(){
    $("p.meta").contents().filter(function(){ return this.nodeType == 3; }).remove();
});

Demo

参考How can I change an element's text without changing its child elements?

答案 3 :(得分:0)

我建议重新创建你的$(“。meta”)DOM节点,所以你必须提取时间,清空你的$(“。 meta“)并插入以前存储的节点。

答案 4 :(得分:0)

您需要使用contents(),它将返回所有子项(包括文本节点)。然后使用remove()删除这些文本节点。

http://jsfiddle.net/Pv3qX/

$(".meta").contents().filter(function() {
     return this.nodeType == 3; // 3 for TEXT_NODE
}).remove()

答案 5 :(得分:-1)

以下是解决方案:http://jsfiddle.net/E6GYs/

$(document).ready(function(){
    $(document).click(function(){
     $('.meta time').remove();
  })
    })