Вместо замены содержимого ВСЕГО поста просто измените значение лайков:
( " . getLikes($id) . " )
=> <span class="likes">( " . getLikes($id) . " )</span>
и
$(`#post${id} .likes`).text(`(${likes})`);
РЕДАКТИРОВАТЬ: Дополнительный вопрос:
Вы спрашивали о запрете нажатия более одного раза. Вы можете добавить флаг, чтобы знать, что они уже щелкнули.
ПРИМЕЧАНИЕ: это будет только один, пока они не перезагрузят страницу, это не лучшее решение, если вы действительно хотите заблокировать их. Вместо этого ваш сервер должен предотвратить это на стороне сервера в PHP (например, проверьте, понравилось ли им уже, прежде чем увеличивать счетчик по идентификатору пользователя + идентификатору сообщения).
function likeButton(id) {
if ($('#post' + id).hasClass('already-liked')) {
return;
}
$('#post' + id).addClass('already-liked');
$.ajax({
url: "../../likes/" + id,
type: "post",
data: {
id: id},
success: function(likes) {
$('#post' + id).html(likes);
}});
}