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");
});
4

2 に答える 2

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");
});
于 2012-04-28T12:57:24.563 に答える
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);
});
于 2012-04-28T12:57:49.103 に答える