jQuery从HTML标记中删除文本

时间:2013-05-20 12:26:06

标签: jquery html regex join split

我在使用正则表达式提取<h1></h1>标记时遇到问题。

我有变量:

var t = '<h1>Some cool text in this tag</h1>';

我希望这样做:

<h1><span>Some</span> <span>cool</span> <span>text</span> <span>in</span> <span>this</span> <span>tag</span></h1>

我的代码如下所示:

var t = '<h1>Some cool text in this tag</h1>';
var reg = /<(.|\n)*?>/ig;  // this is regex for HTML tags
var temp = '';
var s = $(t).text();

temp = '<span>'+ s.split(' ').join('</span> <span>')+'</span>';

$('#output').append(temp);

它应该适用于所有可能的HTML标记,即使var具有如下字符串:

var t = '<strong>Strong text</strong> with some <em>emphasis</em>';

“工作”示例:http://codepen.io/halol/pen/DKeIu

2 个答案:

答案 0 :(得分:0)

尝试使用正则表达式查找匹配的html标记很粗糙,因为它们可能是嵌套的。在任何情况下,这样的事情会做你需要的吗?或者至少帮助你找到正确的方向?

$('#target').children().each(function(){
  $(this).wrap('<span></span>');
  t = $(this).text();
  t = '<span>'+ t.split(' ').join('</span> <span>')+'</span>';
  $(this).html(t);
})

这是一个小提琴:http://jsfiddle.net/s_Oaten/85W3B/

答案 1 :(得分:-1)

试试这个

var t = '<h1>Some cool text in this tag</h1>';
var text = t.split(' ');

for( var i = 1, len = text.length; i < len; i=i+2 ) {
    text[i] = '<span>' + text[i] + '</span>';
}
alert(text.join(' '))

请参阅http://jsfiddle.net/UReCb/