Как не терять обработчик после AJAX-подгрузки
После замены списка кнопки перестают отвечать на нажатия. Прямой обработчик остался на удалённых узлах. Для списка с постоянным контейнером удобнее делегировать событие.
$("#results").on("click", ".show-details", function( event ) {
event.preventDefault();
console.log( this.dataset.id );
});
Контейнер results должен существовать в момент подписки и переживать обновления. Не подписывайтесь заново после каждой загрузки: это даёт повторные вызовы. Заменяйте только его содержимое. Проверьте нажатие на иконку внутри кнопки и две последовательные подгрузки.