| 
	
	
		
		
		
		
		 Ну так вы создаете таймер по событию ухода, в него вешаете функцию по закрытию, получаете intervalID=settimeout(500, func) 
Дальше, грубо говоря, заводите массив, в него загоняете intervalID + func. Если окончательно ушли, через 0.5 секунды таймер вам меню свернет, массив почистит ваша func. Если же пришли на другой элемент, то чистим таймауты через cleanInterval и исполняем функции сразу, массив чистим. 
Массив, а не переменные, на случай, если пользователь нервный и быстро мышку двигает. 
Визуально будет как надо. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 |