我有一个DIV元素,里面填充了一堆我要删除的HTML实体:
<div class="text">
<p><p>​<span style="line-height:25px;">​</span><span style="line-height:25px;">​Hej hop!</span> <span style="line-height:25px;">​</span><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();
});
});
答案 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
});
它仍然留下一些字符,所以你可能需要用你的正则表达式将它们重新出现
$('div.text').html(function(i,v){
return $.trim($('<div>').html(v).text().replace(/<\/?[a-z][a-z0-9]*[^<>]*>/ig, ""));
});
答案 2 :(得分:0)
这些是Ascii代码,因此正则表达式为:/xxx[\x00-\x7F]+xxx/