【发布时间】:2021-05-11 07:22:01
【问题描述】:
我需要在按钮/数字点击时交换内容。
如果您可以在 sn-p 上看到,您可以使用按钮“1、2、3、4”或使用 Next 和 Prev 按钮访问文章。两者都可以访问同一篇文章。我的代码已经可以使用,但如果您想使用 Next/Prev 或数字按钮,您需要先刷新它。
$(document).ready(function() {
$(".btn-hover div").each(function(e) {
if (e != 0)
$(this).hide();
});
$("#next").click(function() {
if ($(".content5 div:visible,.content6 div:visible").next().length != 0)
$(".content5 div:visible,.content6 div:visible").next().show().prev().hide();
else {
$(".content5 div:visible,.content6 div:visible").hide();
$(".content5 div:first,.content6 div:first").show();
}
return false;
});
$("#previous").click(function() {
if ($(".content5 div:visible,.content6 div:visible").prev().length != 0)
$(".content5 div:visible,.content6 div:visible").prev().show().next().hide();
else {
$(".content5 div:visible,.content6 div:visible").hide();
$(".content5 div:last,.content6 div:last").show();
}
return false;
});
$('.btn-hover').first().addClass('btn-active');
$('.btn-hover').click(function(){
var $this = $(this);
$siblings = $this.parent().children(),
position = $siblings.index($this);
console.log (position);
$('.content5 div').removeClass('btn-active').eq(position).addClass('btn-active');
$('.content6 div').removeClass('btn-active').eq(position).addClass('btn-active');
$siblings.removeClass('btn-active');
$this.addClass('btn-active');
});
});
<!doctype html>
<html lang="en">
<head>
</head>
<body>
<!--Navbar-->
<div id="section1-the-timeline" class="scrollNav">
<div class="container-fluid section section_bg_grey">
<div class="col">
<div Class="button-wrap timeline px-5">
<a href="#section2-the-timeline" class="btn-hover">1</a>
<a href="#section2-the-timeline" class="btn-hover">2</a>
<a href="#section2-the-timeline" class="btn-hover">3</a>
</div>
</div>
</div>
</div>
<div id="section2-the-timeline" class="section section_secondary_bg">
<div class="container-fluid">
<div class="row d-flex align-items-center">
<div class="col-md-7">
<div class="text-center section_content">
<div id="content5" class="content5 pb-4">
<div class="btn-content-1 btn-active">
<p>1</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eveniet provident accusamus itaque suscipit adipisci</p>
</div>
<div class="btn-content-2">
<p>2</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eveniet provident accusamus itaque suscipit adipisci ullam reiciendis beatae perspiciatis impedit quam nemo asperiores, deserunt, distinctio</p>
</div>
<div class="btn-content-3">
<p>3</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eveniet provident accusamus itaque suscipit adipisci</p>
</div>
</div>
</div>
</div>
<div class="col-md-5 img_wrapper">
<div id="content6" class="content6">
<div class="btn-content-1 btn-active"><img src="https://en.wikipedia.org/wiki/Image#/media/File:Image_created_with_a_mobile_phone.png"></div>
<div class="btn-content-2"><img src="https://en.wikipedia.org/wiki/Image#/media/File:Image_created_with_a_mobile_phone.png"></div>
<div class="btn-content-3"><img src="https://en.wikipedia.org/wiki/Image#/media/File:Image_created_with_a_mobile_phone.png"></div>
</div>
</div>
</div>
</div>
</div>
<div class="chevron">
<div class="d-flex justify-content-center middle-chevron">
<button id="previous" class="btn btn-chevron"><i class="fas fa-chevron-left"></i></button>
<button id="next" class="btn btn-chevron"><i class="fas fa-chevron-right"></i></button>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="js/animation.js"></script>
</body>
</html>
【问题讨论】:
-
编程不是将像
.content6这样的选择器编号硬编码到您的逻辑中。删除或添加一项并查看您的代码失败。相反 - 使用.length获取元素长度/计数。同样,只要您在文档中插入另一个class="foo bar content5"- 您的脚本也会失败 - 因为定位错误的元素 - 但它仅限于具有特定 ID-s 的按钮,这也会挖掘您的代码可重用性。 -
.content6 只是一个例子。对不起。
-
是的,我已经尝试过使用两个不同的类,您是否建议我需要使用 ID 而不是类?
-
最简单的方法是将所有元素包装在父元素中(导航、幻灯片、上一个/下一个按钮),然后将元素搜索为该父元素的后代。这样一来,您就可以在单个页面中拥有无数类似的模块,而不受限制。否则,您需要使用
data-*属性(给您的按钮)分配以引用它们控制的目标元素。 - 此外,您可以动态创建导航按钮,并且在编写 HTML 时只关注内容循环。 -
你能帮我修复我的代码吗?请
标签: javascript html jquery css button