jquery - 一步一步的 HTML,添加选项
问题描述
我有一个网站,用户将逐步浏览网站以查看更多详细信息(如客户旅程)。
我已经设置了基本代码,所以效果很好。然而,在某些页面上,我希望他们有选项,然后确定他们走的路线。
例如,在第三步,他们可以选择选项 1 或选项 2。如果他们选择选项 1,那么这将仅显示选项 1 的其余步骤。如果他们单击选项 2,则相同。
我在这里创建了一个 codepen,希望它更有意义: - https://codepen.io/scottYg55/pen/PowMawY
如您所见,第 3 步是他们可以选择选项的地方。我还将添加一些其他步骤的更多选项功能。
我尝试过使用该remove()
功能,因此当用户单击选项 1 时,它会删除所有选项 2 div。但是,这无法正常工作。
$(function() {
var $sections = $('.step');
function navigateTo(index) {
// Mark the current section with the class 'current'
$sections
.removeClass('current')
.eq(index)
.addClass('current');
// Show only the navigation buttons that make sense for the current section:
}
function curIndex() {
// Return the current index by looking at which section has the class 'current'
return $sections.index($sections.filter('.current'));
}
// Previous button is easy, just go back
$('.previous').click(function() {
navigateTo(curIndex() - 1);
});
// Next button goes forward iff current block validates
$('.next').click(function() {
if (
$(this).hasClass("option-1-click")) {}
navigateTo(curIndex() + 1);
});
navigateTo(0); // Start at the beginning
});
.step {
display: none;
}
.step.current {
display: inherit;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="all-steps">
<div class="step">Step 1
<div class="main-button"><a class="next" href="#">Next</a></div>
</div>
<div class="step">Step 2
<div class="main-button"><a class="next" href="#">Next</a></div>
</div>
<div class="step">Step 3<br>Choose an option
<div class="main-button"><a class="next option-1-click" href="#">Option 1</a></div>
<div class="main-button"><a class="next option-2-click" href="#">Option 2</a></div>
</div>
<div class="step option-1">Option 1 details<a class="next" href="#">Next</a></div>
<div class="step option-1">Option 1 details<a class="next" href="#">Next</a></div>
<div class="step option-1">Option 1 details<a class="next" href="#">Next</a></div>
<div class="step option-2">Option 2 details<a class="next" href="#">Next</a></div>
<div class="step option-2">Option 2 details<a class="next" href="#">Next</a></div>
<div class="step option-2">Option 2 details<a class="next" href="#">Next</a></div>
</div>
有没有人有任何想法?
解决方案
不确定是否理解您的问题,但remove()
实际上工作正常。
我添加了一个额外的步骤,包括您的所有选项,否则它将仅显示第一个 div。如果您现在选择选项 1,它将显示所有选项 1 div。您可以对选项 2 执行相同操作。
编辑:我看到你计划有一个上一个按钮。然后我建议您使用hide()
,而不是remove()
这样您就可以随时再次显示其他选项。
$(function() {
var $sections = $('.step');
function navigateTo(index) {
// Mark the current section with the class 'current'
$sections
.removeClass('current')
.eq(index)
.addClass('current');
// Show only the navigation buttons that make sense for the current section:
}
function curIndex() {
// Return the current index by looking at which section has the class 'current'
return $sections.index($sections.filter('.current'));
}
// Previous button is easy, just go back
$('.previous').click(function() {
navigateTo(curIndex() - 1);
});
// Next button goes forward iff current block validates
$('.next').click(function() {
if ($(this).hasClass("option-1-click")) {
$('.option-2').remove();
}
if ($(this).hasClass("option-2-click")) {
$('.option-1').remove();
}
navigateTo(curIndex() + 1);
});
navigateTo(0); // Start at the beginning
});
.step {
display: none;
}
.step.current {
display: inherit;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="all-steps">
<div class="step">Step 1
<div class="main-button"><a class="next" href="#">Next</a></div>
</div>
<div class="step">Step 2
<div class="main-button"><a class="next" href="#">Next</a></div>
</div>
<div class="step">Step 3<br>Choose an option
<div class="main-button"><a class="next option-1-click" href="#">Option 1</a></div>
<div class="main-button"><a class="next option-2-click" href="#">Option 2</a></div>
</div>
<div class="step">
<div class="option-1">Option 1 details (1)<a class="next" href="#">Next</a></div>
<div class="option-2">Option 2 details (1)<a class="next" href="#">Next</a></div>
</div>
<div class="step">
<div class="option-1">Option 1 details (2)<a class="next" href="#">Next</a></div>
<div class="option-2">Option 2 details (2)<a class="next" href="#">Next</a></div>
</div>
<div class="step">
<div class="option-1">Option 1 details (3)<a class="next" href="#">Next</a></div>
<div class="option-2">Option 2 details (3)<a class="next" href="#">Next</a></div>
</div>
</div>
推荐阅读
- java - 检查数组是否包含具有递归和某些限制的 int
- php - Laravel Eloquent 中的多表继承
- angular - Angular 8 beforeunload 事件事件在关闭选项卡上不起作用
- python - 使用 Python 的 Format Specification Mini-Language 打印带变量的空格
- php - 为什么日期函数返回错误的星期 d?
- vue.js - vuetify 滑块自定义消息
- c# - 从角度发送到 c# api 失败
- java - Java 动态嵌套循环
- ruby-on-rails - 如果 ActiveRecord::Migrator.needs_migration?(connection) 则引发 ActiveRecord::PendingMigrationError
- python - 我编写了我的电报机器人(在 python 中),提示用户发送图像。如何确保用户只发送图像而不发送其他内容?