2016-06-09 2 views
0

У меня есть таблица с 2-4 столбцами и несколькими строками. Некоторые из очень правильных столбцов имеют текст, некоторые из них имеют изображение, некоторые из них имеют оба, а некоторые из них могут не иметь ни одного из них.Вставьте несколько TDs с помощью суффикса в середину таблицы

Я хочу скопировать содержимое 2-го столбца в 3 вновь созданных столбца, но вставьте их в середину (до text и изображение, если применимо). Так что, похоже, что:

enter image description here

Важно, чтобы перебрать суффиксов как не все элементы должны быть перемещены.

Такой подход:

$("table td:nth-child(2) [id$=2]").each(function(i) { 
    var $newCell = $(this).wrap('<td></td>').parent(); 
    var $newRow = $("table td:nth-child(2) [id$=1]").eq(i).parents('tr'); 
    $(this).parents('tr').remove(); 
    if ($newRow.find("td:contains('text')").index() > -1) { 
    $newRow.find("td:contains('text')").before($newCell); 
    } else if ($newRow.find("td.img").index() > -1) { 
    $newRow.find("td:contains('img')").before($newCell); 
    } else { 
    $newRow.find("td:contains('img')").before($newCell); 
    } 
}); 

$("table td:nth-child(2) [id$=3]").each(function(i) { 
    var $newCell = $(this).wrap('<td></td>').parent(); 
    var $newRow = $("table td:nth-child(2) [id$=1]").eq(i).parents('tr'); 
    $(this).parents('tr').remove(); 
    if ($newRow.find("td:contains('text')").index() > -1) { 
    $newRow.find("td:contains('text')").before($newCell); 
    } else if ($newRow.find("td.img").index() > -1) { 
    $newRow.find("td:contains('img')").before($newCell); 
    } else { 
    $newRow.find("td:contains('img')").before($newCell); 
    } 
}); 

производит этот результат:

enter image description here

FIDDLE.

+1

@RoryMcCrossan: Плохо, я забыл скрипку. См. Мое обновление. – user1170330

ответ

1

Я пытался обновить скрипку с другим подходом: https://jsfiddle.net/ed964u0o/1/

Я сохранил элемент для вставки после того, как в объекте positions.

Смежные вопросы