2013-02-12 46 views
1

我有以下的html <p class="get">This is some content.</p>我想要做的就是使它像这样:<p class="get">This is <span>some</span> content.</p>

要做到这一点,我知道我应该:1.让我的某些文本(做到这一点...)
                                                        2.将我的文本换成跨度(完成后也是...)
                                                              3.代替我与包含我跨度文字文本(没有做过它)获取某些文本替换它并将其包含在跨度中?

我的问题是第3步我只是无法弄清楚。那么我怎样才能用新的文字替换我的“旧”文本呢?
谢谢你们!

Fiddle here

我的代码如下所示:

$(document).ready(function(){ 
//get the whole text 
var ptext = $(".get").text().split(" "); 
var myText = ptext[2]; 
//alert(ptext[2]) 
//alert(myText); 
if($('.get').text().contains(myText)){ 
//$('<span>'+myText+'</span>').appendTo($('.get')); 
} 
else{ 
alert('no text'); 
} 
}); 

回答

1
$('.get').html(function (i, v) { 
    return v.replace('some', '<span>some</span>'); 
}); 
+0

很好的回答非常感谢... THX! – 2013-02-12 18:08:20

2
var word = "some", 
    regex = new RegExp("\\b" + word + "\\b", "g"); 

$(".get").html(function(i, html) { 
    return html.replace(regex, "<span>$&</span>"); 
}); 

DEMO:http://jsfiddle.net/V7Wnk/1/

+0

为什么对于一个正则表达式的需要(除非实际文本的方法是比例子更复杂)?如果你做*需要一个正则表达式,为什么不是一个字面值? – 2013-02-12 17:57:54

+0

@JosephSilber Regex提供了一个全球替代的可能性。而且,单字检测更灵活。 – VisioN 2013-02-12 17:58:45

+0

......这不在示例中。但即使如此,为什么不是一个文字正则表达式呢? – 2013-02-12 17:59:55

1
$('.get').html($(".get").html().replace("some","<span> some </span>")); 
+0

对于这种特定情况,最好使用'.html'函数的函数arg。 – 2013-02-12 17:59:19

相关问题