Похоже, что оно не запускает закрывающее действие, скорее, оно немедленно останавливает анимацию, открывая его.
Эта строка в вашем keydown
обработчике:
$('#control').mouseenter(function() { $(this).stop(); });
Добавляет обработчик событий к #control
, привязанный после того, как ваш текущий равен document.ready
, поэтому он выполняется после. Это означает, что при наведении курсора он запускает анимацию, а затем сразу останавливает ее, поскольку при нажатии keydown
добавляется обработчик для этого на mouseenter
.
Если вы просто удалите эту строку, это остановит это поведение ... но, глядя на ваш код, мне непонятно, почему он вообще существует. Если вы можете описать, что это было добавлено для разрешения, должен быть лучший способ сделать это, не вызывая эту текущую проблему.