javascript 基于URL slug添加/删除类

tktrz96b  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(105)

我正在建立一个英雄节,其中包括四个水平 accordion 项目,他们扩大时,用户点击其中之一。
一个元素在页面加载时是活动的,因为我用类“active”预先设置了它的样式。
我有一些代码,可以从活动元素中删除活动类,并将活动类设置为被单击的类。
代码如下所示:

<script>
$(".tabs_link").on("click", function () {
  $(".tabs_link, .tabs_content").removeClass("active");
  $(this).addClass("active");
  $(this).next(".tabs_content").addClass("active");
});
</script>

上面代码的问题是,它只在用户与元素交互时才起作用,我需要这些元素根据链接中的锚点打开/关闭。

我有四个锚点,我希望它们通过向适当的元素添加“active”类来打开特定的 accordion 。

锚钉:

#recover
#active
#mother
#kids

.tabs_link.tabs_content都有combo类,因此我可以将锚设置为特定的子项,例如.tabs_link.is-blue
基本上我有4个网址的情况下,我需要的功能,以删除活动类,并设置它的每个元素:
我想做一个模板,复制粘贴几次。
例如

if(window.location.href.indexOf("#mother") {
  $(".tabs_link, .tabs_content").removeClass("active");
  $(this).addClass("active");
*// I don't know how to declare to what should I add class, 
$(this).next(".tabs_content").addClass("active");

如果你想了解这个案例,这里有这个网站的链接。[1]

4dc9hkyq

4dc9hkyq1#

您只需使用location.hash将类添加到所需的a标记中。
大概是这样的

function showContent() {
    $(".tabs_link, .tabs_content").removeClass("active");
    const aTag = $(`.tabs_link[href="${location.hash}"]`);
    aTag.addClass('active');
    aTag.next('.tabs_content').addClass('active');
}
showContent(); // on page load

相关问题