2010-01-06 56 views
0

我有文本文檔中的產品規範,我需要將其轉換爲HTML。使用jquery替換帶有標記的符號

聽起來有點怪,但但我想要做的是替換段落標記到兩個表列,所以這個:

<p>Load (kg):5,000, 10,000, 20,000, 30,000</p> 
<p>Excitation Voltage: 10vdc recommended, 20vdc maximum</p> 

這個

<tr> 
    <td>Load (kg)</td> 
    <td>5,000, 10,000, 20,000, 30,000</td> 
    </tr> 

<tr> 
    <td>Excitation Voltage</td> 
    <td>10vdc recommended, 20vdc maximum</td> 
    </tr> 

要替換段落標記我已經使用功能波紋管

$("p").each(function() { 
     $(this).replaceWith("<td>" + $(this).text() + '</td>'); 
    }); 

所以我必須連接到':'關閉和關閉並打開一個她的表數據(列)

任何幫助非常讚賞

預先感謝您

大教堂

回答

2

這是專門針對你的具體的例子,並假定狀態良好的數據。如果文本中可以有多個冒號,則需要調整使用split的限制參數以將其限制爲2個結果。

$("p").each(function() { 
    var text = $(this).text().split(':'); 
    $(this).replaceWith("<td>" + text[0] + '</td><td>' + text[1] + '</td>'); 
}); 
1

您可以使用拆分並獲得該指數值爲0被放置在第一td和索引1值放在第二個td

像這樣的事情

$("p").each (function() { 
    var splitArr = $(this).text().split(':'); 
    var str = "<table><tr><td>"; 
    str+= splitArr[0] + "</td><td>"; 
    str += splitArr[1] + "</td>"; 
    str += "</tr></table>"; 

    $(this).replaceWith (str); 
}); 
1

最簡單的方法可能是使用正則表達式:

$('p').each(function() { 
    $(this).replaceWith("<tr><td>"+$(this).text().replace(/\:\s?/, '</td><td>')+'</td></tr>'); 
}) 

還支持多種細胞和剝離空白的冒號後面。