2013-05-20 98 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/