Copy the contents of one column to another in jQuery

The next jQuery is extremely slow (~ 7 seconds). I am clearly doing it wrong!

I am trying to copy the contents of column col to column 0 in an HTML table so if col is 2, I need to copy column 2 to column 0.

 for (var i=0;i<31;i++) $('.grid tr:nth-child(' + i + ') td:first-child').text( $('.grid tr:nth-child(' + i + ') td:nth-child(' + col + ')').text() ); 

HTML:

 <table> <tr><td>A</td><td>D</td><td>G</td></tr> <tr><td>B</td><td>E</td><td>H</td></tr> <tr><td>C</td><td>F</td><td>I</td></tr> <!-- etc. --> </table> 
+6
source share
2 answers

You do not need to select each cell of the table separately. You can select the columns of the source column and destination and iterate over them:

 // Get the target column table cells. This will select the first cell from // each row in the table. var target = $('.grid tr td:first-child'); // Iterate over each cell in the source column and copy its text to the // corresponding cell in the target column. $('.grid tr td:nth-child(' + (col + 1) + ')').each(function (rowIndex) { target.slice(rowIndex, rowIndex + 1).text($(this).text()); }); 
+4
source

Another variant. Not sure what will work faster. I simply deleted the first column, as it had to be replaced, and then added a selection column:

 col = 2; $('.grid td:first-child').remove(); $('.grid td:nth-child('+(--col)+')').each(function(){ $(this).parent('tr').prepend('<td>'+$(this).text()+'</td>'); }); 

Check it out: here .

+1
source

Source: https://habr.com/ru/post/900102/


All Articles