私は以前、これらのトリックを行っていました。
遅延だけでは機能しません。達成する必要があるのは、1 つのタイマー変数と、それがホバーされているかどうかを示すステータスです。
少し汚い方法ですが、これが実際の例です。無効なhtmlを削除して、さらに関数を追加します。
http://jsfiddle.net/L48VL/1/
var hideTimer;
var Hovering = false;
    function HideFixture()
    {
        if(!Hovering)
        {
            $('#nav li.matches > ul').stop().slideUp(50);
            $('ul.fixture-list').slideUp(50);  
        }
    }
function ShowSub()
{
    clearTimeout(hideTimer); 
     $('.fixture-list').show();
}
次に、ホバーすると、次のようになります
$('#nav li').hover(
    function () {
        //show its submenu
         Hovering = true; 
        clearTimeout(hideTimer);
         $('#nav li.matches > ul.first').stop().slideDown(100);
    }, 
    function () {
        //hide its submenu
            Hovering = false; 
            hideTimer = setTimeout(HideFixture,300);   
        //$('ul.fixture-list').removeAttr('style');         
    }
);
それが役に立てば幸い :)