Вы должны добавить обратный вызов
$('#id').show('drop', 500, function(){
//do something when the element has shown
})
Это взято из документов
Если указан, обратный вызов запускается после завершения анимации.
Это может быть полезно для объединения различных анимаций в
последовательность. Обратному вызову не отправляются никакие аргументы, но это установлено в
анимированный элемент DOM. Если несколько элементов анимированы, это
Важно отметить, что обратный вызов выполняется один раз за сопоставленный
элемент, а не один раз для анимации в целом.
РЕДАКТИРОВАТЬ - если ваша проблема в том, что вы не хотите, чтобы пользователь взаимодействовал с элементом, пока он показывает, что вы можете сделать что-то подобное
function elementNotReady(){
return false;
};
//attach the events so that if the user clicks the element nothing happens
$('#id').on("click", elementNotReady);
$('#id').show('drop', 500, function(){
//Remove the handler when the animation finishes
$('#id').off('click', elementNotReady);
})