我找到了一些可能有效的代码,但我无法破译如何更改它以便它适用于我当前的 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/