javascript - 打开 Accordion 负载与事件类

标签 javascript jquery html css accordion

我的网站上有一个 Accordion ,我希望 Accordion 能够根据事件类(class)的位置在正确的级别打开。我做了一个JSFiddle .

JS:

$(document).ready(function ($) {
$('.servicesub').find('.servicesubitem').click(function () {

    if ($(this).next().is(':visible')) {
        //Collapse
        $(this).next().slideToggle('fast');
        $(this).removeClass('active');

       // $("#footer-wrapper").animate({marginTop: "0px"}, 'fast');
    } else {
        //Expand
        $(this).next().slideToggle('fast');
        $(this).siblings().removeClass('active');
        $(this).addClass('active');

        //hide other panels
        $(".servicesubli").not($(this).next()).slideUp('fast');

        //$("#footer-wrapper").animate({marginTop: "200px"}, 'fast');

    }

});




});  

HTML:

    <div class="col-xs-12 col-md-3 col-lg-3 servicesub" id="servicesub" >
<li class="servicesubitem active">
                            <span class="subitem">Web Design,
                                <br>
                                Multimedia &amp; Email</span><span class="fa1 fa-globe"> </span>
                        </li>
                        <div class="servicesubli">
                            <ul>
                                <a href="domains.php">
                                <li>
                                    Domain Registration
                                </li>
                                </a>
                                <a href="webdesign.php">
                                <li>
                                    Web Design &amp; Development
                                </li>
                                </a>
                                <a href="webhosting.php">
                                <li>
                                    Web Hosting
                                </li>
                                </a>
                                <a href="email.php">
                                <li>
                                    Managed Email Systems
                                </li>
                                </a>
                            </ul>
                        </div>
                        <li class="servicesubitem">
                            <span class="subitem">Vessel
                                <br>
                                Security</span><span class="fa1 fa-lock"> </span>
                        </li>
                        <div class="servicesubli">
                            <ul>
                                <a href="tracking.php">
                                <li>
                                    Yacht Tracking
                                </li>
                                </a>
                                <a href="ssas.php">
                                <li>
                                    SSAS
                                </li>
                                </a>
                                <a href="#">
                                <li>
                                    SAT C
                                </li>
                                </a>
                            </ul>
                        </div>
                            </div>

CSS:

* Service Sub */
.servicesub { padding:10px; }
.servicesub ul { list-style-type: none; padding: 0px; color: #fff;}
.servicesub li{ font-size: 14px; height: 70px; padding: 17px 0px 10px 20px; margin-top: 10px; text-transform: uppercase; }
.servicesub li a {text-decoration: none;}
.servicesub li a:hover {color:#fff;}
.servicesub li { background-color: #017CEB; }
.servicesub li:hover { background-color: #015BAC; }
.servicesub li.active { background-color: #015BAC; }
.servicesub span:after { color:#fff; font-family: FontAwesome; display: inline-block;  width: 1.2em; font-size: 40px; position: absolute; text-align: center; margin-top: -9px; }
#servicesub.stick { position: fixed; top: 80px; max-width: 293px; }

.subitem { color:#fff; height:58px; width: 215px; position: absolute; right: 10px; text-align: center; }
.servicesubitem { cursor: pointer; }
.servicesubli { cursor: pointer; display: none; }
.servicesubli.default { display: block; }
.servicesubli ul { width: 100%; font-size: 14px;}
.servicesubli li {  padding: 8px; margin-top: 1px; text-transform: uppercase; height: 35px; text-align: center;}
.servicesubli a { text-decoration: none; color: #fff; }

.servicesub .getintouch { background-color: #00539f; padding: 10px; height: auto;}
.servicesub .getintouch:hover { background-color: #00539f; }
.servicesub .getintouch h3 { color: #fff; text-align: center; }
.servicesub .getintouch p { color:#fff; text-align: center; }

正如您所看到的, Accordion 可以点击,并且事件类(为本演示手动设置)就在那里,我只是想要它,以便在加载页面时切换正确的 Accordion 部分。提前致谢。

最佳答案

要回收您的逻辑,您只需将 .active 类添加到您想要的任何元素,然后搜索 .servicesubli.active 即可。请注意以下几点...

<div class="servicesubli active">

$(function() {

    [...]

    $('.servicesubli.active').slideToggle('fast');
});

JSFiddle Link - 演示


根据评论,如果您希望关闭 servicesubitem.active,只需修改以下内容...

$('.servicesubitem.active').next('.servicesubli').addClass('active').slideToggle('fast');

JSFiddle Link - 演示 - .servicesubitem.active 选择器

关于javascript - 打开 Accordion 负载与事件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32720053/

相关文章:

jquery 等待 .ajax() 在 .each() 迭代内完成

javascript - 如何在 html 中创建新元素?

javascript - Bootstrap 4 "All"选项卡

回调的javascript代码执行顺序与正常执行顺序的矛盾

javascript - 对 "softBind"函数如何工作的困惑

jquery - 小图像缩略图不起作用

javascript - "display: none"div 中的图像未加载 onpageload

javascript - Ember.js,使用 {{each}} 循环遍历两个数组

javascript - 当 Node.js 调用 HTML 时,外部 Javascript 和 CSS 不会影响 HTML

html - 如何在边框内添加文本?