Это потому, что ваше событие скрытия удаляет список до того, как элемент может быть фактически нажат. Есть несколько решений.
Сначала вы можете использовать setTimeout, чтобы скрыть
setTimeout( function() { /* hide list */ }, 500);
В ответ на ваш комментарий нет, вы не можете изменить порядок событий. Так что вам придется искать обходной путь. Есть несколько методов, но так как вы используете jQuery, я бы сделал это следующим образом.
//you probably have something like this currently
$('element').blur( function() { $('results').hide(); });
//change it to something like this
$('element').blur( function() { $('results').fadeOut(300); });