使用jQuery将带有拆分的段落转换为列

时间:2014-02-17 21:36:48

标签: jquery html

我必须处理电子邮件的html,并且需要将邮件的html转换为包含行和列的简单表。

以下是我无法找到答案的一种情况:

<td>
    <p class="productDetails">
        Product:
        Brocade peplum pencil dress
        <br />
        Qty: 1
        <br />
        Size: Size 12
        <br />
        Colour: Black
        <br />
        Price:  GBP 50.00
        <br />
    </p>
</td>

我需要将其转换为以下格式:

<td>
    <td>
        Product:
        Brocade peplum pencil dress
      </td>
      <td>
        Qty: 1
      </td>
      <td>
        Size: Size 12
      </td>
      <td>
        Colour: Black
      </td>
      <td>
        Price:  GBP 50.00
       </td>
</td>

我将使用unwrap()删除列中的列,但我仍然坚持如何将<br>替换为td,因为尝试使用</td><td>替换<br> 1}}不起作用。

我有很多类似的场景,如果我能够超越这一点,将会非常有帮助。

2 个答案:

答案 0 :(得分:0)

好的,我将<br>替换为</td><td>想法并提出了这个想法。

<强> FIDDLE

var str = '<td>' + $('.productDetails').html();
str = String(str.substring(0,str.lastIndexOf("<br>")) + '</td>').replace(/<br>/g, '</td><td>')

$('#table2 tr').html(str);

答案 1 :(得分:0)

我想你想在td里面创建一个新表,因为你不能直接嵌套td;你可以试试这样的:

$(document).ready(function(){
  //Create the table wrapping p tag
  $('.productDetails').wrap('<table><tr>');
  //Remove p tag and wrap each item with a td
  $('.productDetails').contents().unwrap().wrap('<td>');
  //Remove td who has a br element inside
  $('td').filter(function() {
    return $(this).html() === '<br>';
    }).remove();
})

请查看此示例 Fiddle

这只是在Chrome和Firefox上进行了测试