javascript - 从外部链接打开 Accordion 面板

标签 javascript jquery html css

我有以下代码,并尝试从外部链接打开 Accordion 面板。我从网站上获取了代码作为示例,到目前为止它运行良好,但我似乎不知道如何执行此操作。

jQuery:

jQuery(document).ready(function() {
    function close_accordion_section() {
        jQuery('.accordion .accordion-section-title').removeClass('active');
        jQuery('.accordion .accordion-section content').slideUp(300).removeClass('open');
    }

    jQuery('.accordion-section-title').click(function(e) {
        // Grab current anchor value
        var currentAttrValue = jQuery(this).attr('href');

        if(jQuery(e.target).is('.active')) {
            close_accordion_section();
        }else {
            close_accordion_section();

            // Add active class to section title
            jQuery(this).addClass('active');
            // Open up the hidden content panel
            jQuery('.accordion ' + currentAttrValue).slideDown(300).addClass('open'); 
        }

        e.preventDefault();
    });
});

HTML:

    <div class="accordion">
        <div class="accordion-section">
            <a class="accordion-section-title" href="#section-1">Section 1: </a>
            <div id="section-1" class="accordion-section-content">
                <p>Content goes here</p>
            </div><!--end .accordion-section-content-->
        </div><!--end .accordion-section-->

        <div class="accordion-section">
            <a class="accordion-section-title" href="#section-2">Section 2: </a>
            <div id="section-2" class="accordion-section-content">
                <p>Content goes here</p>
            </div><!--end .accordion-section-content-->
        </div><!--end .accordion-section-->

到目前为止,我已经尝试过外部链接:

<a href="#section-2.active">Link</a>

...以及一些类似的事情,但不幸的是还没有欢乐。我也摆弄过 jQuery,但也没有取得任何进展。

我对 jQuery 没有太多经验,我正在努力学习它,所以请彻底回答所有问题,以便我可以学习。非常感谢!

最佳答案

当页面加载时,您的 ready 函数将运行,这应该打开 URI 的 hash 的 Accordion 部分。指:

jQuery(document).ready(function() {
    // get the #section from the URL
    var hash = window.location.hash; 
    // open accordion
    jQuery(hash).slideDown(300).addClass('open'); 
    // set title to active 
    jQuery(hash).prev('.accordion-section-title').addClass('active');
    /* ... the rest of your code here */
});

如果你没有两次获取 jQuery 对象,你可能会获得轻微的性能提升,你可以像这样链接它们:

    jQuery(hash).slideDown(300).addClass('open')
                .prev('.accordion-section-title').addClass('active');

关于javascript - 从外部链接打开 Accordion 面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38505700/

相关文章:

javascript - 谷歌融合表纬度,经度而不是位置

javascript - 用来自其他数组的对象填充一个数组

JavaScript Jquery 作业问题只适用于变量的最佳值

php - 带有 Canvas 的 Bootstrap 复选框

jquery - AJAX 调用后无法使用 DOM 元素

php - 需要帮助格式化 PHP、javascript 树控件中目录列表的结果

javascript - 为什么我不能将事件添加到引用自身的集合中的每个元素而不是 "for(){}"语句中的最后一个元素

javascript - Summernote 不允许在写入 onpaste 事件后格式化粘贴的文本

linux - 如何流式传输存档的媒体文件?

html - css 样式问题,对于按钮