Как только на кнопку наведен курсор через
setTimeout запускаем отсчет до появления меню, если курсор уведен с кнопки, то отменяем таймаут через
clearTimeout.
var timesArray = [];
$('.menu').hover(
function()
{
var id = jQuery.data(this);
timesArray[id] = setTimeout(function() {
//Показываем меню
$(this).css({'display' : 'block'});
timesArray[id] = "";
}, 500);
},
function()
{
var id = jQuery.data(this);
//Скрываем меню
$(this).css({'display' : 'none'});
if (timesArray[id])
{
clearTimeout(timesArray[id]);
}
}
);
Попробуйте.