【问题标题】:accordion menu addclass not working手风琴菜单添加类不起作用
【发布时间】:2015-07-27 14:39:22
【问题描述】:

我有一个手风琴菜单,其背景图像和标题(菜单选项卡)的颜色在悬停和单击时会发生变化。我希望在该菜单选项卡打开时也是如此(即,图像/颜色指示打开了哪个菜单)。现在,只要光标不在菜单标题上,背景图像就会被移除,颜色会恢复到非活动状态。我在这个网站和其他地方的所有研究都指向使用 removeClass 和 addClass 方法,但我无法让它工作。

JQuery:

$(document).ready(function(){
    var panel = $("#accordian h3");
    panel.click(function(){
        //slide up all the link lists
        $("#accordian ul ul").slideUp();
        //slide down the link list below the h3 clicked, if it's closed
        if(!$(this).next().is(":visible"))
            $(this).next().slideDown();
        panel.removeClass('active')
        panel.addClass('active')
    });
})

相关 CSS(减去 UL 规范):

/*main menu heading style*/
#accordian h3 {
    font-size: 12px;
    line-height: 34px;
    padding: 0px 0px 0px 5px;
    cursor: pointer;
    /*fallback for browsers not supporting gradients*/
    background: #984e06;
    background: linear-gradient(#984e06, #FF9600);
}
/*heading hover effect, active (as clicked) effect*/
#accordian h3:hover,
#accordian h3:active {
    text-shadow: 0 0 2px rgba(0, 0, 0, 1.0);
    background-repeat: no-repeat;
    background-image: url(../Images/Logo.jpg);
    background-size: 25px 25px;
    background-position: 5px 4px; /*left center;*/
    padding: 0px 35px;
    background-color: #ffdf05; /*linear-gradient(#ffdf05, #FF9600);*/
}

我花了几个小时试图找到解决方案。 removeClass 和 addClass 方法是否正确?并在代码中的正确位置?我还尝试使用 toggleClass 方法将这两行替换为一行,但这也不起作用。感谢您的帮助。

【问题讨论】:

    标签: jquery addclass jquery-ui-accordion


    【解决方案1】:

    我已经删除了你的一些代码,并稍微修改了一下 我相信这就是您的意思:

    $(document).ready(function(){ 
    
        $('#accordian ul').hide();
    
        $("#accordian h3").click(function(){
    
            $("#accordian ul").slideUp();
              //type here the css that you want if it's NOT clicked            
              $('#accordian h3').css({
                  'background-color' : '#984e06', 
                  'background-position': '5px 4px'
              });
    
            if(!$(this).next().is(":visible"))
            {
                $(this).next().slideDown();
                //type here the css that you want if it's clicked            
                $(this).css({
                    'background-color' : '#ffdf05', 
                    'background-position': '5px 4px'
                });
    
            }
    
        });
    
    });
    

    示例:
    http://jsfiddle.net/xvmq8g9k/

    在第 9 行编辑:我没有使用 $(this),而是将其更改为 $('#accordian h3'),因此所有 h3 都将被还原,而不是您想要点击的那个

    如果您还有其他问题,请告诉我

    【讨论】:

    • Rev--谢谢,这是关闭的,除了单击下一个菜单选项卡时背景颜色不会恢复为非活动状态。菜单选项卡只有在第二次单击以关闭选项卡时才会恢复到非活动状态。
    • 除了原来的问题外,这是有效的(打开的菜单选项卡不显示活动状态。jsfiddle.net/EricTroyer/tcg3f4ns
    • 我已经编辑了代码,如果你没看错请告诉我
    • 它在您的 JSFiddle 中运行良好,但是当我将其传输到我的 JSFiddle 或本地文件时,整个菜单会崩溃。
    • 首先,您的 JSfiddle 中的第 77 行正在覆盖背景颜色,当我试图让 h3 坚持使用颜色时它不起作用,所以我不得不删除该行,所以它不会t 覆盖您想要保留的颜色。如果您从一开始就编写它,那么创建这种效果会更容易而不是使用这个现成的 CSS,但我猜您对这些语言不够熟悉,无论如何我做了您想要的 - 这就是代码:jsfiddle.net/cpzs1a6v
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 2015-06-25
    • 2020-08-09
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    相关资源
    最近更新 更多