2013-05-20 83 views
1

我在使用正则表达式提取<h1></h1>标记时遇到问题。jQuery从HTML标记中移除文本

我有变量:

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

+0

什么是预期的邻'/ P“强大的文本一些重点”' –

+0

到底是什么您遇到的问题,从描述因为它似乎在做你想做的事情。 –

+0

我想分开标签和文本。 然后加入他们的行列,但随着跨度标签 –

回答

-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/

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/