Вы уже близко - на самом деле похоже, что ваш код должен работать по крайней мере с первого клика. В любом случае,
Измените строку
$tr.find('td').fadeOut(1000,function(){ $tr.remove(); });
на
$('#' + del_id).closest('tr').remove(); });
Для этого нужно найти элемент кнопки удаления в DOM, а затем просмотреть «структуру» DOM к первому элементу TR и удалите его из DOM.
Обычно лучше полагаться на простые переменные в обратных вызовах asyn c, поскольку полагаться на объекты, такие как $ this или в вашем случае, $ tr может вызвать проблемы, когда объект, на который указывает переменная $ tr, не тот, который вы ожидали.
РЕДАКТИРОВАТЬ: Добавлен рабочий фрагмент ниже, чтобы проиллюстрировать технику. Если у вас все еще есть проблема, пожалуйста, создайте минимальную проверяемую версию как фрагмент из вашего кода, чтобы мы могли точно определить проблему.
$('.del').on('click', function() {
$(this).closest('tr').remove();
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="example">
<thead>
<tr>
<th>First name</th>
<th>Second name</th>
<th>Age</th>
<th style="text-align: center;">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Joe</td>
<td>Bloggs</td>
<td>22</td>
<td style="text-align: center;">
<button id='A1' class='del'>Delete</button>
</td>
</tr>
<tr>
<td>Jane</td>
<td>Bloggs</td>
<td>19</td>
<td style="text-align: center;">
<button id='A2' class='del'>Delete</button>
</td>
</tr>
<tr>
<td>Joanne</td>
<td>Bloggs</td>
<td>28</td>
<td style="text-align: center;">
<button id='A3' class='del'>Delete</button>
</td>
</tr>
</tbody>
</table>