javascript - 使用 javascript 切换元素的可见性和滑动
问题描述
- 我有三个名为 0、1 和 2 的地图。
- 我有两个列表:1 和 2。
单击时列表会滑动切换,显示子列表。
只有当列表 2 和 1 被隐藏时,才应该出现地图 0。即当没有列表可见时应该出现 0。
当 subList1 可见时,只应出现 Map 1。
- 当 subList2 可见时,只应出现 Map 2。
这是我所得到的。如果您单独单击列表 1,它可以正常工作。它在列表 1 和 0 之间切换。它对第二个分组执行相同的操作。一旦您从列表 1 到 2 单击,就会出现混乱。我根本无法理解它!请帮忙!
$(document).ready(function(){
$("#listItem1").click(function(){
$(".listSub1").slideToggle(500);
$('.listSub2').slideUp(500);
$('.map_1').fadeToggle(500);
if ($('.listSub1').is(':visible')){
$('.map_0').fadeOut(500);
}
if ($('.map_0').is(':hidden') && $('.listSub1').is(':visible')){
$('.map_0').fadeIn(500);
}
});
$("#listItem2").click(function(){
$(".listSub2").slideToggle(500);
$('.listSub1, .listSub3, .listSub4').slideUp(500);
$('.map_2').fadeToggle(500);
if ($('.listSub2').is(':visible')){
$('.map_0').fadeOut(500);
}
if ($('.map_0').is(':hidden') && $('.listSub2').is(':visible')){
$('.map_0').fadeIn(500);
}
});
});
ul {
list-style-type:none;
}
.container{
width:100%;
background-color:white;
}
.trail_headings{
border: 1px solid rgba(255, 255, 255, 0.7);
text-align:center;
background-color:none;
width:95%;
margin-left:0.5rem;
border-radius:0.1rem;
cursor:pointer;
cursor:hand;
display:block;
}
.listSub1,.listSub2{
display:none;
}
.map_1, .map_2{
display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<ul>
<!-- first list-->
<li class="trail_headings" id="listItem1">
<div><h1>Lake District</h1></div></li>
<li><div class="listSub1" id="1A">Grange to High Spy</div></li>
<li><div class="listSub1" id="1C">Scaffel Pike</div></li>
<!-- second list-->
<li class="trail_headings" id="listItem2">
<div><h1>Peak District</h1></div></li>
<li><div class="listSub2">The Crowden Horseshoe</div></li>
<li><div class="listSub2">Edale to Kinder Scout</div></li>
</ul>
</div>
<div class="map_0">
0
</div>
<div class="map_1">
1
</div>
<div class="map_2">
2
</div>
</div>
解决方案
解决了(下)。唯一的问题是它在淡入/淡出时间重叠的 Safari 上有一个奇怪的闪烁 - 不知道如何解决这个问题?
$("#list1").click(function(){
//slides
$(".listSub1").slideToggle(500);
$('.listSub0, .listSub2').slideUp(500);
//maps
if ($('.map_0').is(':visible') || $('.map_2').is(':visible')){
$('.map_0,.map_2,').fadeOut(0);
$('.map_1').stop().fadeIn(500);
}
else {
$('.map_1').fadeOut(0);
$('.map_0').fadeIn(500);
}
});
推荐阅读
- javascript - react-dom-development:未捕获的类型错误:无法读取未定义的属性“forEach”
- android - 无法获得通知弹出窗口
- javascript - 检查是否包含在 React 中的数组中
- javascript - 如何使用 AJAX 将 JavaScript 数组传递给 PHP 数组
- javascript - 添加对 Javascript 的 dll 引用
- elasticsearch - Elasticsearch异常(创建查询失败:无效范围:从(95)不能>到(93))
- android - Jetpack Compose 的屏幕过渡动画
- scala - NoSuchElementException spark.rpc.message.maxSize?
- java - 为什么 spring-boot-starter-data-jpa 2.5.0 由于“找不到表”而无法初始化数据?
- excel - 哪个excel公式使用以下数据