3

所以我有一些 jQuery 可以向下滑动菜单,当我将鼠标悬停在向下滑动的 DIV 上时,我必须添加悬停类我需要悬停效果才能在菜单项上保持活动状态。

问题是,即使 DIV 消失了,它也只会留在那里——我曾尝试使用 removeClass,但是一旦我滚动到菜单选项 DIV,它就会将其删除。

我在http://jsfiddle.net/pCTXq/3/有 JsFiddle

jQuery在下面

$(document).ready(function() {
    $(".menu_item, .menu_options").hover(function() {
    $(this).addClass('hover');
        $(".menu_options").stop(true, true).slideDown(400);
    }, function() {
        $(".menu_options").stop(true, true).delay(10).slideUp(400);
    });

});

我查看了 post jquery hover().addClass() 问题,但这似乎没有多大帮助

在此先感谢您的帮助。

编辑。刚刚还注意到,在 JSfiddle 上似乎也将悬停类添加到 menu_options - 当我在浏览器中测试实际脚本时,情况并非如此

4

2 回答 2

2

编辑:

请参阅此小提琴以获取更新的答案


如果我正确理解了您的问题,您需要删除悬停类:

$(document).ready(function() {
    $(".menu_item, .menu_options").hover(function() {
    $(this).addClass('hover');
        $(".menu_options").stop(true, true).slideDown(400);
    }, function() {
        $(this).removeClass('hover');
        $(".menu_options").stop(true, true).delay(10).slideUp(400);
    });
    
});
于 2013-04-23T15:07:46.557 回答
1

利用第二个参数来slideUp。完成后,然后删除该类。像这样的东西:

$(document).ready(function() {
    $(".menu_item, .menu_options").hover(function() {
        $(this).addClass('hover');
        $(".menu_options").stop(true, true).slideDown(400);
    }, function() {
        $(".menu_options").stop(true, true).delay(10).slideUp(400, function( {
            $(".menu_item, .menu_options").removeClass('hover')
        });
    });
}

保存在您的小提琴中http://jsfiddle.net/pCTXq/9/

所以,基本上,在悬停时添加悬停类(或者 mouseenter 实际上更合适),并且在完成向上滚动之前不要删除它。您可能需要调整添加的内容(从外观上看,$(".menu_item")可以这样做),但这是一般的想法。

于 2013-04-23T15:14:11.927 回答