单击javascript更改类,保持css动画

时间:2013-11-16 21:39:41

标签: javascript jquery html css animation

所以我需要一些帮助。我有一个需要javascript / css组合的问题。

jsfiddle

我有菜单设置。如您所见,箭头在悬停时动画,这不是我想要的情况。

我希望arrow / css在点击时动画。所以我不知道如何做到这一点,如果我应该在js中使用.hasClass并在点击时切换它。另外,我如何能够定义打开哪个菜单项(由类定义,而不是在js中定义)。

点击后,我希望箭头保持动画后的状态(即打开菜单向上箭头,关闭菜单向下箭头)。

我是否需要更改js,或者只是进行最少的编辑。

$(document).ready(function() {
    // Collapse everything but the first menu:
    $("#VerColMenu > li > a").not(":first").find("+ ul").slideUp(1);
    // Expand or collapse:
    $("#VerColMenu > li > a").click(function() {
        $(this).find("+ ul").slideToggle("fast");
    });
});

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

以下是问题第二部分的解决方案:http://jsfiddle.net/R7f2K/3/

您的HTML已更新为更改:

<i class="fa fa-angle-down vnavright"></i>

<i class="vnavright fa fa-angle-down"></i>

我已将此行添加到您的JS代码中:

$(this).find("[class^='vnavright']").toggleClass('fa-angle-down fa-angle-up');

CSS规则已修改为使用#VerColMenu li a [class^="vnavright"]

虽然事情按照您的意愿运作,但我发现动画令人困惑。

答案 1 :(得分:0)

在原始HTML中,您可能还想将第一个箭头的类更改为fa-angle-up:

    <ul id="VerColMenu">
        <li><a class="top-vnav">General <i class="fa fa-angle-up vnavright"></i></a>
...