javascript - jQuery Accordion 选项卡颜色问题

标签 javascript jquery html css

我的 Accordion 的标签在特定时间保持我希望它们保持的颜色时遇到问题。

我希望选项卡在默认情况下保持乳白色,并在光标悬停时变为深灰色。当您单击该选项卡时,它将变为事件状态并将颜色更改为青色。问题是,当我打开一个选项卡并单击另一个选项卡时,第一个选项卡将保持青色。当我单击一个选项卡并再次单击它以将内容向上滑动时,使选项卡变为深灰色的悬停功能不起作用。

我希望它仅在处于事件状态且显示内容时为青色,而当没有显示内容且 block 关闭时,我希望颜色变为乳白色并在光标悬停时为深灰色。

代码:

$(document).ready(function(){
            $(".tab").click(function(){
                $(".tab").removeClass("tab-active");
                $(this).addClass("tab-active");

                var current_state=$(this).next().css("display");
                $(".contents").slideUp();

                if(current_state!="block")
                {
                    $(this).next().slideDown();
                }

                if($(this).hasClass("tab-active")==true && current_state!="block")
                {
                    $(this).css({"backgroundColor":"cyan","color":"black"});
                }
                else
                {
                    $(this).css({"backgroundColor":"#E6E6E6"});

                }

           });
        });

CSS:

        .container{width:100%; float:left;}
        .tab-container{width:800px; min-height:300px; float:left; margin-top:100px; margin-left:300px;}
        .tab{border:1px solid black; width:798px; height:26px; border-radius:5px; float:left; background-color:#E6E6E6;}
        p{float:left; margin-left:10px; margin-top:1px; font-size:22px;}
        .content-active{display:block;}
        .contents{border:1px solid black; width:800px; min-height:30px; float:left; display:none;}
        .tab:hover{background-color:#A4A4A4; color:white; cursor:pointer;}

HTML:

 <body>
    <div class="container">
        <div class="tab-container">
            <div class="tab tab-active">
                <p>Beer</p>
            </div>
            <div class="contents content-active">
                <span>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui.

                Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce vulputate eleifend sapien. Vestibulum</span>
            </div>
            <div class="tab">
                <p>Wine</p>
            </div>
            <div class="contents">
                <span>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui.

                Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce vulputate eleifend sapien. Vestibulum</span>
            </div>
            <div class="tab">
                <p>Juice</p>
            </div>
            <div class="contents">
                <span>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui.

                Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce vulputate eleifend sapien. Vestibulum</span>
            </div>
            <div class="tab">
                <p>Water</p>
            </div>
            <div class="contents">
                <span>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui.

                Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce vulputate eleifend sapien. Vestibulum</span>
            </div>
            <div class="tab">
                <p>Soda</p> 
            </div>
            <div class="contents">
                <span>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui.

                Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce vulputate eleifend sapien. Vestibulum</span>
            </div>
        </div>
    </div>
</body>

最佳答案

问题是您的 jQuery 正在将内联样式应用于事件选项卡并且它永远不会消失。更好的解决方案是从 JS 中删除这些行,并将样式简单地分配给 .tab-active 类。

剪下这个:

if($(this).hasClass("tab-active")==true && current_state!="block") {
    $(this).css({"backgroundColor":"cyan","color":"black"});
} else {
    $(this).css({"backgroundColor":"#E6E6E6"});
}

并将其添加到您的 CSS 中:

.tab-active {
    background-color: cyan;
}

关于javascript - jQuery Accordion 选项卡颜色问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40325742/

相关文章:

javascript - Grunt.js 设置绝对路径

javascript - Jquery - 单击时更改 img src,如果单击不同的 img 或 block ,则返回旧的 src

jquery - 每次页面展开时自动将 div 调整为页面宽度

javascript - 使用数组将表单数据存储在本地存储中并在新页面上检索它

jquery - 阻止 jQuery 选择也匹配的父级

html - 如何让浏览器宽度变化时字体始终居中?

javascript - 如何使用 JavaScript 将不同的基本 href 设置或附加到不同的链接?

javascript - 在 Javascript 中从本地目录读取文件

html - Chrome/Webkit 中我的 HTML 中出现奇怪的人工制品(带有屏幕截图和实例)

html - 移动 safari 上的绝对定位输入宽度