javascript - 从外部链接打开 Accordion

标签 javascript jquery html css

我找到了一些可能有效的代码,但我无法破译如何更改它以便它适用于我当前的 Accordion 结构。

这是我找到的修复方法:

$(function () {
$(".tab-content").hide().first().show();
$(".inner-nav li:first").addClass("active");

$(".inner-nav a").on('click', function (e) {
    e.preventDefault();
    $(this).closest('li').addClass("active").siblings().removeClass("active");
    $($(this).attr('href')).show().siblings('.tab-content').hide();
});

var hash = $.trim( window.location.hash );

if (hash) $('.inner-nav a[href$="'+hash+'"]').trigger('click');

});

这是我页面上 Accordion 的一部分:

<div class="container">
<div class="accordion-trigger">
<h3>Wedding</h3>
</div>
<div class="accordion-container">
<p>
<tab>
<bgcolor class="shadow">
<a href="pdf/MyLifestyle_WeddingPackages_020616_01.pdf"><font color="black" size="+1"><strong>Wedding Packages PDF</strong></font></a>
</bgcolor>
</tab>
</p>
<hr class="separator1"> 
</div>

在 div 容器内还有其他几个 div class="accordion-trigger",它们会在您单击时激活。当然,加载时页面上只有第一个 Accordion 处于事件状态。

上面的修复应该检查哈希 ID 并在哈希 ID 上执行 Click 事件。

最佳答案

由于您使用的是未提供的 CSS,因此打开导航:

$(function () {
    var hash = parseInt($.trim(window.location.hash)), // hash as number
        $triggers = $('.accordion-trigger'); // list of triggers
    if (hash) { // if hash exists
        if($triggers.length >= hash) { // if not greater than number of triggers
            $triggers.eq(hash+1).trigger('click'); // open n-th item
        }
    }
});

example.com/site/#4 应该打开第 4 个元素(如果存在)。 顺便说一句,那是糟糕的代码。

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

相关文章:

javascript - 使用 jquery 垂直切换菜单

javascript - 如何在播放视频时使页面变暗?

javascript - GWT HTML-Class 标签样式未混淆

javascript - jQuery AJAX 与普通表单的行为不同并在基于 div 的弹出窗口中调用

javascript - 使用 php 提交表单,通过 javascript 检查电子邮件

javascript - 通过 jQuery 横向动画

javascript - 如何删除 pinterest 小部件的板边框?

html - 带有CSS的盒子中的盒子

javascript - Heroku部署找不到js文件

javascript - window.location.reload(true) 工作不一致