我必须处理电子邮件的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}}不起作用。
我有很多类似的场景,如果我能够超越这一点,将会非常有帮助。
答案 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上进行了测试