【问题标题】:Jquery - Animate div on hoverJquery - 悬停时动画 div
【发布时间】:2012-04-19 17:48:30
【问题描述】:

我在悬停一个 id 时将一个简单的动画应用到一个 div。 div 不是 id 的孩子。因此,当我的光标离开 id 时,div 会自行隐藏。 这是正确的,但我要求 div 保持可见,除非我的鼠标离开它。

您可能需要测试才能看到我的问题。链接如下。

这是我的 jQuery:

            $(function(){
                $('.has-children').hover(function(){
                    var the_handle = $(this).attr('id');
                    var the_sub_nav = '#' + the_handle + '-sub-nav';
                    $(the_sub_nav).stop().animate({height:'200px'},1000);
                },function(){
                    var the_handle = $(this).attr('id');
                    var the_sub_nav = '#' + the_handle + '-sub-nav';
                    $(the_sub_nav).stop().animate({height:'0px'},1000);
                });

           });

这里是问题的链接:

http://tinyurl.com/c9yunhu

(我应该提到我受限于那个 HTML 代码。我使用的是电子商务平台,这是我可以创建子类别的唯一方法)

【问题讨论】:

    标签: jquery hover jquery-animate


    【解决方案1】:

    如果我理解正确的话;只需删除hover() 的第二个功能,使 div 在鼠标移出时保持可见。完整代码:

    $(function(){
        $('.has-children').hover(function(){
            var the_handle = $(this).attr('id');
            var the_sub_nav = '#' + the_handle + '-sub-nav';
            $(the_sub_nav).stop().animate({height:'200px'},1000);
        });
    });
    

    【讨论】:

    • 抱歉,我需要 div 在鼠标移出时隐藏。问题是当我尝试将鼠标悬停在可见的 div 上时,它会消失......这是应该做的,因为我不再将鼠标悬停在触发器上。但我需要它留下来。
    • 我从你的问题的第一个版本中不明白这一点。但我看到@Andrea Turri 为您提供了一个很好的解决方案。
    【解决方案2】:

    这里有一个简单的 JSFiddle http://jsfiddle.net/toroncino/uPDXX/1/

    编辑:这里有一个简短的版本:http://jsfiddle.net/toroncino/uPDXX/3/

    编辑 2:

    现在看一下,是基于你当前的html...显然我永远不会使用这样的js。 =) 但也许它会帮助你...

    http://jsfiddle.net/toroncino/uPDXX/5/

    【讨论】:

    • 太好了,谢谢,但是我在上面说过我不能更改 HTML 代码,这是我伪造子类别的唯一方法......
    • 我用更短的 js 版本更新了我的 Fiddle。你只需要使用 .find() 和 css 让它工作。如果你不能改变 HTML,也许你可以改变 css?
    • 看看我的最后一个编辑现在...在你的 html 基础上。
    • Legend,我进行了一些编辑以得到我需要的东西,但效果很好! Andrea Turri 你就是男人!
    【解决方案3】:
        $('.has-children').on('hover', function(){
            var the_sub_nav = '#' + this.id + '-sub-nav';
            $(the_sub_nav).stop().animate({height:'200px'},1000);
        });
    

    【讨论】:

      【解决方案4】:

      将子菜单容器添加到悬停功能,这样它在悬停在菜单项或整个子菜单上时将保持打开状态。

      $('.has-children, #submenu-ID').hover(function(){
      

      【讨论】:

      • 对不起,我上面提到我无法更改 HTML 结构,我已经对我的问题进行了编辑以便更好地解释它,谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多