2010-01-06 2 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> 

заменить пункт тег Я использовал функцию bellow

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

Поэтому я должен подключиться к ':', чтобы закрыть и закрыть anot ее данные таблицы (столбец)

Любая помощь очень ценится

Спасибо заранее

Dom

ответ

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>'); 
}) 

также поддерживает несколько ячеек и вскрышных Пробельные после двоеточия.