да аяксом,
открывается плавно,поэтому, если отправлять несколько раз за секунду, то
получается гармошка, то есть она не успев открыться получает ещё пару запросов
ну как вариант, организация анимации в jQuery, в функции animate есть параметр callback которым передается функция, это функция будет вызвана по завершению анимации.
а можете более детально описать проблему? и шаги которые вам необходимо выполнить