Я думаю, что проблема в том, что у вас здесь происходит некоторое состояние гонки.
если вы переходите от одного ребенка к другому (из #gifts), тогда у вас есть mouseout и mouseover, которые получаютсрабатывает.если указатель мыши срабатывает последним, то все меню скрывается.
то, что вам, вероятно, следует сделать, это реализовать время ожидания, например, 200 мс) для указателя мыши, и очистить его, если оно существует при вызове указателя.
таким образом, при срабатывании указателя мыши потребуется 0,2 секунды - достаточно времени для запуска следующего события при наведении курсора.