2013-02-12 55 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

相關問題