尝试使用jquery从元素中删除所有html

时间:2013-03-11 16:12:45

标签: javascript jquery html

我有一个DIV元素,里面填充了一堆我要删除的HTML实体:

<div class="text">
<p>&lt;p&gt;&#8203;&lt;span style="line-height:25px;"&gt;&#8203;&lt;/span&gt;&lt;span style="line-height:25px;"&gt;&#8203;Hej hop!&lt;/span&gt;&nbsp;&lt;span style="line-height:25px;"&gt;&#8203;&lt;/span&gt;&lt;span</p>
</div>

我正在使用jQuery并创建了这段代码,但它无法正常工作:

$('.text').each(function () {
    $(this).replace(/<\/?[a-z][a-z0-9]*[^<>]*>/ig, "");
});

我正在尝试用短语“Hej Hop!”替换文本。

正则表达式没错。

以下是我使用其他一些页面的方式:

    text = text.replace(/<\/?[a-z][a-z0-9]*[^<>]*>/ig, "");

但是这是一个带有参数的javascript函数,它返回了文本..但是在这个特定的页面上我需要使用jquery并迭代并检查......

解决问题:

$('text').each(function () {
    $(this).html(function (i, v) {
        return $('<div>').html(v).text();
    });
});

3 个答案:

答案 0 :(得分:7)

你只需要:

$('.text').empty();

编辑 - 如果你想从元素的内容中删除标记,最简单的事情就是Marc B在评论中建议:

$('.text').each(function() {
  $(this).text($(this).text());
});

答案 1 :(得分:2)

您可以使用.html()

将它们剥离
$('div.text').html(function(i,v){
    return $('<div>').html(v).text();
    // create new div - append HTML and get the text from the div
});

http://jsfiddle.net/UA9P9/

它仍然留下一些字符,所以你可能需要用你的正则表达式将它们重新出现

$('div.text').html(function(i,v){
     return $.trim($('<div>').html(v).text().replace(/<\/?[a-z][a-z0-9]*[^<>]*>/ig, ""));
});

http://jsfiddle.net/VfxaT/

答案 2 :(得分:0)

这些是Ascii代码,因此正则表达式为:/xxx[\x00-\x7F]+xxx/