Я не совсем уверен, в чем проблема, но вы сможете сократить код до этого, используя более сложный селектор:
$("#menu > ul > li:has(ul)").mouseenter(function() {
$(this).find("ul").stop(true, true).slideDown();
}).mouseleave(function() {
$(this).find("ul").stop(true, true).slideUp();
});
РЕДАКТИРОВАТЬ: Iвидите, вы хотите, чтобы физическое направление меню увеличивалось, а не уменьшалось.Для этого ваши меню должны быть абсолютно расположены внизу.Тогда изменение высоты заставит их подняться.
Пример: http://jsfiddle.net/BKLjs/
#menu ul ul {
display:none;
width:100%;
position:absolute;
left:0;
bottom: 40px;
background:#6a6a6a;
}
Вот еще несколько сокращений кода: http://jsfiddle.net/BKLjs/2/
$("#menu > ul > li:has(ul)").hover(function(e) {
$(this).find("ul").stop(true, true)['slide' + (e.type === 'mouseenter' ? 'Down' : 'Up')]();
});