vertical multilevelmenu slideToggle故障

时间:2013-11-25 17:30:40

标签: jquery slidetoggle

所以我有一个带子菜单的垂直菜单,当光标在父链接上移动时,子菜单slideDown。在兄弟链接与光标之间快速滚动时会出现问题。您正在浏览的父母的任何子链接的动画在完成和(我假设)启动之间闪烁。现在我有了stop()并且我已经尝试了很多迭代,甚至包括[queue](http://api.jquery.com/stop/)值,但无济于事。

$('ul li').hover(
        function(){
            $(this).find(' > ul').stop( true, true ).slideDown(700);
        },
        function() {
            $(this).find(' > ul').stop( true, true ).slideUp(700); 
        });

以下是一个示例:http://jsfiddle.net/Kupdt/

我发现的另一个问题是,当你执行相同的动作时,如果你有.stop(true,false)动画'坚持'并且当再次发起时不再显示比当时达到的内容更多的内容光标最初移动到下一个父链接。

现在,作为一种简单的道歉形式,我确信这个问题已在本网站的其他地方得到解答,原因很简单,因为我可以轻松地复制它。但是,我搜索过,找不到任何相关内容。可能因为我不知道你怎么快速说出这个问题。


编辑
最后这个问题在我的情况下不是问题,因为我在使用较小的屏幕进行查看时,使用菜单作为我的网站的响应式“重新格式化”的一部分。由于这些设备几乎没有类似于鼠标指针的悬停系统,因此问题不会出现。

1 个答案:

答案 0 :(得分:1)

使用.queue()

尝试:

$('#block-menu-block-1 li.expanded ul').slideUp(0);    
$('#block-menu-block-1 li.expanded').hover(function () {
    $(this).find(' > ul').stop(true, true).slideDown(700).queue(function () {});
},    
function () {
    $(this).find(' > ul').stop(true, true).slideUp(700).queue(function () {});
}).queue(function () {});

Fiddle here.