1. You are using jQuery, so you can simplify your code too much. remove onclick from button and directly do:
$('.btn-warning').click(function(){
var id = $(this).closest('tr').find('.id').text();
alert(id);
});
Working snippet:
$('.btn-warning').click(function() {
var ids = $(this).closest('tr').find('.id').text();
alert(ids);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tbody id="list">
<tr class='row'>
<td class='id'>b17dcat126</td>
<td class='name'>Nguyễn Nhật Minh</td>
<td class='phone'>010313234</td>
<td class='sex'>Nam</td>
<td>
<button class='btn btn-warning' data-toggle='modal' data-target='#update'>Sửa</button>
</td>
</tr>
</tbody>
</table>
2. Your code will work as well, if you pass button object to the function:
Working snippet:
function updatedata(element) {
var id = $(element).closest("tr").find('.id').text();
alert(id);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tbody id="list">
<tr class='row'>
<td class='id'>b17dcat126</td>
<td class='name'>Nguyễn Nhật Minh</td>
<td class='phone'>010313234</td>
<td class='sex'>Nam</td>
<td>
<button class='btn btn-warning' data-toggle='modal' onclick='updatedata(this)' data-target='#update'>Sửa</button>
</td>
</tr>
</tbody>
</table>