javascript - 试图做到这一点,以便我可以使用 div 打开一个 div,关闭任何其他打开的 div,然后滚动到我单击的 div 打开它
问题描述
对不起,如果这令人困惑。我有一组包含标题的六个 div。我希望这样当您单击 div 时,会在显示信息的标题下打开一个新 div。当用户单击下一个标题时,我希望它关闭打开的 div,打开新的 div,然后滚动到新打开的 div 的标题。
到目前为止,除了滚动到我刚刚单击的 div 之外,我可以让它做所有事情。我已经尝试了很多在这里找到的不同代码,但是我对 jquery 的了解还不够,无法弄清楚。非常感激任何的帮助。
您可以在此处查看页面 - http://justinj16.sg-host.com/services/
现在只有前两个选项卡设置为打开(如果我不能让它工作,我不想再花时间了)。
这是我使用的代码 -
<script>jQuery(document).ready(function($) {
//Hide all content to be revealed
$('.reveal_content').hide();
//Create the click event for each reveal button
$('.reveal_button').click(function (e) {
//Prevent the default button action (i.e. redirecting to a url)
e.preventDefault();
//Get the parent section for the button clicked
$parent_section = $(this).closest('.reveal_section');
//Remove the opened class from all other buttons
$('.reveal_button').not(this).removeClass('opened');
//Close all content in other sections
$('.reveal_section').not($parent_section).find('.reveal_content').fadeOut('slow');
//Hide/Reveal the content in the same section as the button clicked
$(this).addClass('opened');
$parent_section.find('.reveal_content').each(function() {
$(this).slideToggle();
}
)
});
}
)</script>
解决方案
尝试以下操作:
$("h2").click(function() {
$(".content.active").removeClass("active");
$(this).parent().find(".content").addClass("active");
$("html,body").animate({
scrollTop: $(".content.active").offset().top
}, 1000);
});
.container {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.block {
text-align: center;
width: 30%;
border: 1px solid #777;
height: auto;
padding: 40px 0px;
}
.content {
height: auto;
max-height: 0;
overflow: hidden;
}
.content.active {
max-height: unset;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="block">
<h2>title</h2>
<div class="content">
this is a content
</div>
</div>
<div class="block">
<h2>title</h2>
<div class="content">
this is a content
</div>
</div>
<div class="block">
<h2>title</h2>
<div class="content">
this is a content
</div>
</div>
<div class="block">
<h2>title</h2>
<div class="content">
this is a content
</div>
</div>
<div class="block">
<h2>title</h2>
<div class="content">
this is a content
</div>
</div>
<div class="block">
<h2>title</h2>
<div class="content">
this is a content
</div>
</div>
</div>
推荐阅读
- javascript - 如何在d3中的每个破折号上创建一条带箭头的虚线?
- javascript - 拖放角js后克隆一个元素
- macos - 我无法在 Mac OS Catalina (Haskell) 中安装库光泽
- python - 我正在尝试编写一个简单的代码来计算税收并在您购物时保持运行总额
- tensorflow - 如何通过对象检测在谷歌云视觉上训练边缘 tpu?
- r - 如何在 R 中使用 lapply 替换嵌套循环?
- python - 使用 Django 和 openpyxl 提供文件时损坏的 excel 文件
- python - 在基于 celery+flask 的应用程序中,我需要为 Redis 安装什么?
- typescript - 如何告诉 Typescript lodash.filter() 使某些东西不为空?
- javascript - 我可以打印一个状态对象数组,但是当我尝试从数组中的一个对象访问一个值时,整个对象是未定义的