2010-02-22 131 views
1

我有這樣的HTML:jQuery的,追加HTML

<h1> Text1 Text2 </h1> 

我通過jQuery要改變這個HTML中:

<h1> <span>Text1</span> Text2 </h1> 

我我頭上來了只是追加和正則表達式(也許你有另一個想法),不幸的是我沒有「正則表達式」的經驗。 「Text1」是多變的。它應該是「h1」中的第一個文字 有人能幫助我!

謝謝!

回答

3

假設你想要包裝的跨度每個H2的第一個字,而H2是保證裏面有沒有HTML標記,你如下做到這一點:

// For each H2. 
$('h2').each(function() { 
    // Get text. 
    var text = $(this).text(); 
    // Split into words. 
    var words = text.split(' '); 
    // Wrap the first word. 
    if (words.length > 0) words[0] = '<span>' + words[0] + '</span>'; 
    // Join the results into a single string. 
    var result = words.join(' '); 
    // Put the results back into the H2. 
    $(this).html(result); 
}); 

或者使用正則表達式:

// For each H2. 
$('h2').each(function() { 
    $(this).html($(this).text().replace(/^(\W*)\b(\w+)\b/, '$1<span>$2</span>')); 
}); 
+0

+1美元,2美元。我不知道你可以這樣做。 – Joel 2010-02-22 01:14:08

+0

這太棒了! – AlexC 2010-02-22 01:27:06

0

獲取文本

var text = $('h2').text(); 
var $arr = text.split(' '); 

現在你必須在數組值,可以循環init或僅僅指剛使用$改編[0]和$改編[1]用它無論你有多喜歡它。

1

下面將包裹第一h1標籤的第一個字用span標籤。

$("h1").html($("h1").html().replace(/^\w+\b/, function(result) { 
    return "<span>" + result + "</span>"; 
})); 
+0

text1將要改變,應該是自動第一個字 – AlexC 2010-02-22 00:41:21

+0

更新以匹配任何字。 '\ w'匹配單詞字符(字母,數字和下劃線)。爲了更通用,你可以使用'.'來匹配任何東西。 – Joel 2010-02-22 01:11:19