我有一组包含内容的标签。标签转换为移动的上的 accordion 。这部分已经工作。第一个标签是页面加载时默认打开的标签。我在页面上有一个跳转链接,我正在尝试编码滚动到标签并打开(激活)相应的标签。
试图弄清楚如何让页面顶部的链接跳转到Accordion部分,同时还打开Tab 2data-actab-id=“2”
超文本标记语言
<section class="accordion">
<!-- Tabs -->
<section class="accordion-tabs">
<button class="accordion-tab accordion-active" data-actab-group="0" data-actab-id="0">Title-one</button>
<button class="accordion-tab" data-actab-group="0" data-actab-id="1">Title-two</button>
<button class="accordion-tab" data-actab-group="0" data-actab-id="2">Title-three</button>
<button class="accordion-tab" data-actab-group="0" data-actab-id="3">Title-four</button>
<button class="accordion-tab" data-actab-group="0" data-actab-id="4">Title-five</button>
<button class="accordion-tab" data-actab-group="0" data-actab-id="5">Title-six</button>
</section>
<!-- Tabbed Content -->
<section class="accordion-content">
<article class="accordion-item accordion-active" data-actab-group="0" data-actab-id="0">
<h4 class="accordion-item__label">Description</h4>
<div class="accordion-item__container">
</div>
</article>
<article class="accordion-item" data-actab-group="0" data-actab-id="1">
<h4 class="accordion-item__label">Specs</h4>
<div class="accordion-item__container">
</div>
</article>
<article class="accordion-item" data-actab-group="0" data-actab-id="2">
<h4 class="accordion-item__label">Reviews</h4>
<div class="accordion-item__container">
<div id="reviews">
</div>
</div>
</article>
<article class="accordion-item" data-actab-group="0" data-actab-id="3">
<h4 class="accordion-item__label">Q&A</h4>
<div class="accordion-item__container">
</div>
</article>
<article class="accordion-item" data-actab-group="0" data-actab-id="4">
<h4 class="accordion-item__label">Videos</h4>
<div class="accordion-item__container">
</div>
</article>
<article class="accordion-item" data-actab-group="0" data-actab-id="5">
<h4 class="accordion-item__label"><span class="chart-title-indicator">Size Chart</span></h4>
<div class="accordion-item__container">
</div>
</article>
</section>
</section>
控制打开和关闭选项卡/ accordion 的Javascript(这很有效)
<script>
$(document).ready(function () {
console.log("document ready");
const labels = document.querySelectorAll(".accordion-item__label");
const tabs = document.querySelectorAll(".accordion-tab");
function toggleShow() {
const target = this;
const item = target.classList.contains("accordion-tab") ?
target :
target.parentElement;
const group = item.dataset.actabGroup;
const id = item.dataset.actabId;
tabs.forEach(function (tab) {
if (tab.dataset.actabGroup === group) {
if (tab.dataset.actabId === id) {
tab.classList.add("accordion-active");
} else {
tab.classList.remove("accordion-active");
}
}
});
labels.forEach(function (label) {
const tabItem = label.parentElement;
if (tabItem.dataset.actabGroup === group) {
if (tabItem.dataset.actabId === id) {
tabItem.classList.add("accordion-active");
} else {
tabItem.classList.remove("accordion-active");
}
}
});
}
labels.forEach(function (label) {
label.addEventListener("click", toggleShow);
});
tabs.forEach(function (tab) {
tab.addEventListener("click", toggleShow);
});
});
</script>
我尝试了一个基本的#hash跳转链接,它将跳转到div,但由于div位于选项卡内,因此它只在该选项卡已经打开/活动时才起作用,而不是在它不活动时。
我可以使用跳转链接到外部div,但这只是向下跳转页面,并没有使适当的标签活动。
<a href="#reviews">Read Reviews</a>
or
<a href="#" class="reviews">Read Reviews</a>
with this function:
$(document).ready(function () {
$("a.reviews").click(function (event) {
event.preventDefault();
$("html, body").animate(
{
scrollTop: $(".accordion").offset().top - 150,
},
500
);
});
});
但是这些解决方案并没有解决打开/激活标签页的问题。我在这里回顾了许多其他问题,但我不知道如何将滚动条集成到我现有的打开标签页的代码中。
1条答案
按热度按时间kknvjkwl1#
对于我的答案,我首先打开选项卡,然后使用jquery的scrollTo滚动到选项卡中的div。
我通过一个数据属性传递选项卡ID,并使用HREF作为目标div。