jquery - 手风琴打开时如何将“+”号更改为“-”号?
问题描述
如问题中所述,当单击的问题的答案可见时,如何将“+”号正确更改为“-”号。
此时,单击两次问题时,“+”号变为“-”号。
总而言之,我只希望在关闭问题答案时显示“+”符号,并在打开问题答案时显示“-”符号。
// Change +/-
$(".question").click(function() {
if ($(this).next().is(":visible")) {
$(this).addClass("active");
} else if ($(".question").next().is(":hidden")) {
$(this).removeClass("active");
}
});
// FAQ
$(".question").click(function() {
$(".answer").slideUp();
if ($(this).next().is(":visible")) {
$(this).next().slideUp();
} else {
$(this).next().slideDown();
}
});
.question {
padding: 20px 5px;
box-sizing: border-box;
font-size: 1.2em;
cursor: pointer;
border-bottom: 1px solid #dddddd;
display: flex;
align-items: center;
}
.question:before {
content: "+";
color: #008aff;
display: block;
margin-right: 10px;
font-size: 20px;
}
.question.active:before {
content: '-';
margin-right: 13.86px;
}
.answer {
display: none;
padding: 20px;
line-height: 1.7;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="faq">
<div class="question">Question 1</div>
<div class="answer">Answer 1</div>
<div class="question">Question 2</div>
<div class="answer">Answer 2</div>
<div class="question">Question 3</div>
<div class="answer">Answer 3</div>
</div>
解决方案
你有 addClass 和 removeClass 错误的方式。您还应该将 removeClass 应用于所有其他问题,以确保在不显示时显示 +。
// Change +/-
$(".question").click(function() {
if ($(this).next().is(":visible")) {
$(this).removeClass("active");
} else if ($(".question").next().is(":hidden")) {
$('.question').removeClass("active");
$(this).addClass("active");
}
});
// FAQ
$(".question").click(function() {
$(".answer").slideUp();
if ($(this).next().is(":visible")) {
$(this).next().slideUp();
} else {
$(this).next().slideDown();
}
});
.question {
padding: 20px 5px;
box-sizing: border-box;
font-size: 1.2em;
cursor: pointer;
border-bottom: 1px solid #dddddd;
display: flex;
align-items: center;
}
.question:before {
content: "+";
color: #008aff;
display: block;
margin-right: 10px;
font-size: 20px;
}
.question.active:before {
content: '-';
margin-right: 13.86px;
}
.answer {
display: none;
padding: 20px;
line-height: 1.7;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="faq">
<div class="question">Question 1</div>
<div class="answer">Answer 1</div>
<div class="question">Question 2</div>
<div class="answer">Answer 2</div>
<div class="question">Question 3</div>
<div class="answer">Answer 3</div>
</div>
推荐阅读
- excel - 在 Selenium VBA 中提取变化的 XPath
- python - Octave int 太大
- regex - perl 正则表达式不匹配并包含下一行
- amazon-web-services - 我可以将外部网络适配器连接到 Window Server 吗?
- rust - 如何告诉借用检查器清除的 Vec 不包含借用?
- python - 并发用户的 Python API 性能问题
- php - 接口和解释语言
- async-await - Blazor 页面组合框数据源到异步方法
- google-workspace - 使用 App 脚本向自定义属性添加值
- fortran - Doxygen:在 Fortran 代码的目录中有两次“模块”