#javascript #html #jquery #css #html-table
Вопрос:
У меня есть следующая таблица:
Заголовок | Еще один заголовок |
---|---|
Первый (некоторый-текст-изначально-скрытый) щелчок | ряд |
который при «щелчке» становится
Заголовок | Еще один заголовок |
---|---|
Сначала (какой-то текст-должен-быть-виден сейчас) нажмите | ряд |
при «щелчке» текст «некоторый изначально скрытый текст» не отображается после «щелчка», я хочу показать и скрыть текст при «щелчке» У меня есть рабочая таблица, как показано здесь:jsfiddle
Код: HTML:
<link href='http://fonts.googleapis.com/css?family=Open Sans' rel='stylesheet' type='text/css'>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="font-size: 13px;">
<th> header1</th>
<th> header2 </th>
<tbody>
<tr class="test">
<td>data-always-visible
<span class="complete">some-data-to hide and show</span>
<br>
<i class="fa fa-chevron-down" style="font-size: 9px;">Click for more details of </i>
</td>
<td> some data...</td>
</tr>
</tbody>
</table>
CSS:
.test~ .test2{
display: none;
}
.open .test~ .test2{
display: table-row;
}
.test {
cursor: pointer;
}
.complete{
display:none;
}
JS/jQuery:
$('table').on('click', 'tr.test .fa-chevron-down', function() {
$(this).closest('tbody').toggleClass('open');
$(this).closest('complete').show();
});
Заранее спасибо.
Комментарии:
1. Вы намеревались
.test2
появляться только после щелчка или хотите, чтобы он всегда был виден?
Ответ №1:
Вы используете неправильный селектор, он должен быть .complete
и должен использоваться siblings
вместо closest
.
$(this).siblings('.complete').show();
https://jsfiddle.net/viethien/dbc349gm/6/
Я обновил код, чтобы показать/скрыть ваш div
if(!$(this).siblings('.complete').is(":visible")){
$(this).siblings('.complete').show();
}else{
$(this).siblings('.complete').hide();
}
Комментарии:
1. Спасибо, Привет!!! Но я хочу переключать текст, но я хочу переключать текст, показывать и скрывать текст по щелчку мыши.
2. Я обновил код и ссылку на jsfiddle
Ответ №2:
span.complete
является родным братом i.fa-chevron-down
. $.closest
ищет только сами поставляемые элементы и их предков.
Вы можете использовать $.siblings
вместо этого.
$('table').on('click', 'tr.test .fa-chevron-down', function() {
$(this).closest('tbody').toggleClass('open');
$(this).siblings('.complete').show();
});
.test~ .test2{
display: none;
}
.open .test~ .test2{
display: table-row;
}
.test {
cursor: pointer;
}
.complete{
display:none;
}
<link href='http://fonts.googleapis.com/css?family=Open Sans' rel='stylesheet' type='text/css'>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="font-size: 13px;">
<th> header1</th>
<th> header2 </th>
<tbody>
<tr class="test">
<td>data-always-visible
<span class="complete">some-data-to hide and show</span>
<br>
<i class="fa fa-chevron-down" style="font-size: 9px;">Click for more details of </i>
</td>
<td> some data...</td>
</tr>
<tr class="test2">
<td>data-always-visible</td>
<td> some data...</td>
</tr>
<tr class="test2">
<td>data-always-visible</td>
<td> some data...</td>
</tr>
</tbody>
</table>
Комментарии:
1. Спасибо, Дэвид, я пробовал, но это тоже не работает.
2. Проверьте мою правку. Я включил ваш код в качестве фрагмента, и он работает так, как ожидалось.
3. Черт возьми, это работает в вашем случае и не работает в моей скрипке. Спасибо! но я хочу переключать текст, показывать и скрывать текст по щелчку мыши.