Скрыть/показать некоторую часть ячейки таблицы jquery

#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. Черт возьми, это работает в вашем случае и не работает в моей скрипке. Спасибо! но я хочу переключать текст, показывать и скрывать текст по щелчку мыши.