2012-04-28 8 views
1

私はスクリプトを作成しました。ナビゲーションのサブメニューが開きます。サブメニューからマウスを離したとき。サブメニューは300msの遅延で閉じる必要があります。しかし、遅れは働いていません。どうすればこの問題を解決できますか? ...サブメニューを遅らせる

$('.nav-main .container li').hover(function() { 
    if ($(this).find('.submenu').length > 0) { 
     $(this).addClass("hover"); 
     $(this).find('.submenu').show(); 
    } 
}, function() { 
    $(this).find('.submenu').delay(300).hide(); 
    $(this).removeClass("hover"); 
}); 
+2

[hoverIntent](http://cherne.net/brian/resources/jquery.hoverIntent.html)。 – wroniasty

答えて

0

私は、次のコードをテストしていませんが、それは動作するはず

$('.nav-main .container li').hover(function() { 
    if ($(this).find('.submenu').length > 0) { 
     $(this).addClass("hover"); 
     $(this).find('.submenu').show(); 
    } 
}, function() { 
    var submenu = $(this).find('.submenu'); 
    setTimeout(function() { 
     submenu.hide(); 
    }, 300); 
    $(this).removeClass("hover"); 
}); 
0

あなたがたsetTimeout()メソッドを作成する必要があります、また、以下を行う必要があります。これは私のスクリプトです関数の内部で使用するオブジェクトを定義する$(this)はnullになります。

$('.nav-main .container li').hover(function() { 
    if ($(this).find('.submenu').length > 0) { 
     $(this).addClass("hover"); 
     $(this).find('.submenu').show(); 
    } 
}, function() { 
    var object = $(this); 
    setTimeout(function() 
    { 
     $(object).find('.submenu').hide(); 
     $(object).removeClass("hover"); 
    }, 300); 
}); 
関連する問題