У меня есть таблица со сворачиваемыми ячейками, текст которой я хотел бы изменить при раскрытии. В частности, когда ячейки свернуты, рядом с текстом ячейки отображается знак «плюс» (чтобы сообщить пользователю, что есть еще что-то, что можно увидеть), и отображается текст «(Щелкните, чтобы развернуть ...)». Однако я хотел бы заменить знак плюса знаком минус при щелчке по ярлыку и стереть текст «(Щелкните, чтобы развернуть ...)».
Проблема, с которой я столкнулся, заключается в том, что значок знака «минус» и значок «плюс» появляются вместе и исчезают вместе, а не знак «минус», заменяющий знак «плюс», и наоборот. Как мне go заставить их заменять друг друга при каждом сворачивании / расширении?
Ниже приведен рабочий пример упрощенной версии моего кода:
$(document).ready(function() {
$('.hide').hide();
$('[data-toggle="toggle"]').change(function() {
$("label[for='" + this.id + "'] i.fa-plus-circle").toggle();
$("label[for='" + this.id + "'] i.fa-minus-circle").toggle();
$("label[for='" + this.id + "'] span").toggle();
$(this).parents().next('.hide').toggle();
});
});
[data-toggle="toggle"] {
display: none;
}
.label {
display: block;
}
.fa-minus-circle {
display: none;
}
table,
tr,
th,
td {
border: 1px solid black;
border-collapse: collapse;
font-family: Arial;
width: 100%;
}
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<table>
<tbody class="section">
<tr>
<td colspan="2">
<label class="label" for="person">
<i class="fa fa-plus-circle"></i>
<i class="fa fa-minus-circle"></i>
<b>Person</b>
<span class="clicktoexpand">(Click to expand...)</span>
</label>
<input type="checkbox" id="person" data-toggle="toggle">
</td>
</tr>
</tbody>
<tbody class="hide">
<tr>
<td class="people">Jack</td>
<td class="right cell" id="jack">
<span>0</span>
</td>
</tr>
<tr>
<td class="people">Jill</td>
<td class="right cell" id="jill">
<span>0</span>
</td>
</tr>
</tbody>
<tbody class="section">
<tr>
<td colspan="2">
<label class="label" for="place">
<i class="fa fa-plus-circle"></i>
<i class="fa fa-minus-circle"></i>
<b>Place</b>
<span class="clicktoexpand">(Click to expand...)</span>
</label>
<input type="checkbox" id="place" data-toggle="toggle">
</td>
</tr>
</tbody>
<tbody class="hide">
<tr>
<td class="city">LA</td>
<td class="right cell" id="nyc">
<span>0</span>
</td>
</tr>
<tr>
<td class="city">NYC</td>
<td class="right cell" id="nyc">
<span>0</span>
</td>
</tr>
</tbody>
</table>