JSFiddle - React, Tailwind, and code Playground
by Nechifor Vasile
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<table id="container" >
<tr><th>Column 1</th><th>Column 2</th></tr>
<tr>
<td id="col_1_1" >Test 1-1</td>
<td id="col_1_2">Test 1-2</td>
<td id="actions_1"><button line="1" class="btn btn-danger">Edit</button></td>
</tr>
<tr>
<td id="col_2_1">Test 2-1</td>
<td id="col_2_2">Test 2-2</td>
<td id="actions_2"><button line="1" class="btn btn-danger">Edit</button></td>
</tr>
<tr>
<td id="col_3_1">Test 3-1</td>
<td id="col_3_2">Test 3-2</td>
<td id="actions_3"><button line="1" class="btn btn-danger">Edit</button></td>
</tr>
</table>
JavaScript
var old_values = {},
num_cols = 2,
line_data = {},
i;
$("#container").on('click',"button",function(){
var current_line = $(this).attr('line');
if($(this).text() == 'Edit'){
for(i=1;i<=num_cols;i++){
line_data[i]=$("#col_"+current_line+"_"+i).html();
$("#col_"+current_line+"_"+i).html('<input type="text" id="col_'+current_line+'_'+i+'_input" value="'+line_data[i]+'" class="form-control" />');
}
old_values[current_line] = line_data;
$('#actions_'+current_line).html('<button line="'+current_line+'" class="btn btn-success">Save</button><button line="'+current_line+'" class="btn btn-default">Reset</button>');
}
else if ($(this).text() == 'Save'){
// save data
for(i=1;i<=num_cols;i++){
$("#col_"+current_line+"_"+i).html($("#col_"+current_line+"_"+i+"_input").val());
}
$('#actions_'+current_line).html('<button line="'+current_line+'" class="btn btn-danger">Edit</button>');
}
else
{
for(i=1;i<=num_cols;i++){
$("#col_"+current_line+"_"+i).html(old_values[current_line][i]);
}
$('#actions_'+current_line).html('<button line="'+current_line+'" class="btn btn-danger">Edit</button>');
}
});