Преобразование абзацев с разрывами в столбцы с использованием jQuery

0

Я должен обработать 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>, чтобы заменить <br> не работает.

У меня есть несколько подобных сценариев, и было бы очень полезно, если я смогу пройти мимо этого момента.

  • 0
    Почему будет $('br').replaceWith('</td><td>'); не работа? Вот рабочая скрипка: jsfiddle.net/hPftR .
  • 0
    Вы можете сделать что-то вроде этого jsfiddle.net/aaPLv
Показать ещё 3 комментария
Теги:

2 ответа

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

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);
  • 0
    Это работает и может быть полезным, но я предпочитаю чистое решение JQuery от Danko. Я всегда могу упасть обратно на ваше предложение , потому что у меня есть другие сценарии , в которых получение селектора может быть трудно , потому что нет <p> с именем класса.
  • 0
    @jmarais Это нормально, но я мог бы написать общее решение, если бы знал это. Я просто предположил, что этот формат будет постоянным.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню