добавьте эту строку в ваш код, она будет служить вашим целям. пожалуйста, проверьте, что я добавил несколько стилей CSS в нужных местах:
EDIT:
$(document).ready(function() {
// getting links from db and show sub_menu div //
$(".menu_item").mouseover(function(){
$(this).children().slideDown(100,function(){});
$(this).children(".sub_menu").css({'display':'block'});
});
// hiding sub_menu div //
$(".menu_item").mouseout(function(){
$(this).children(".sub_menu").slideUp(100);
$(this).children(".sub_menu").css({'height':'auto', 'display':'none' });
});
// keeping sub_menu div visible on mouse over //
$(".sub_menu").mouseover(function() {
$(this).stop();
$(this).css({'display':'block'});
});
$(".sub_menu").mouseout(function() {
$(this).parent().css("background-image","url(images/menu_bg.gif)");
$(this).slideUp(10);
$(this).css({'height':'auto', 'display':'none'});
});
// document ready end
});
, поскольку вы используете функции slideUp и slideDown в jQuery.
при быстром наведении курсора мыши на высоту неправильно устанавливается значение div вашего подменю.
slideUp происходит, когда ваш элемент display:block
(т.е. видимый), и его высота начинается с фактической высоты, пока не станет нулевой (0).
slideDown происходит, когда высота элемента начинает увеличиваться с нуля (0) до его фактической высоты, и она display:none
(т.е. скрыта).