Как показать скрытые строки таблицы при нажатии на основную?

178
14 мая 2018, 20:20

Попытаюсь описать, что нужно сделать. По данным из файла data.json строится таблица. Видны строки с параметром hid=null. У скрытых подразделов, hid равен id соответствующим им разделам. По клику на ячейку раздела с классом "rmenu (номер)", появляются строки подразделов с соответствующим номером в классе "hid (номер)".

<?php
  $getfile = file_get_contents('data.json');
  $jsonfile = json_decode($getfile);
  $hid = array();
  $id = array();
?>
<table align="center">
  <tr>
    <th>Title</th>
    <th>Имя</th>
    <th>Адрес</th>
    <th>Телефон</th>
  </tr>
  <tbody>
    <?php foreach ($jsonfile as $index => $obj) { 
        if ( $obj->hid === null ) {
          echo '<tr><td><a href="#" class="rmenu ' . $obj->id . '">' . $obj->id . '</a></td>'; ?>
            <td><?php echo $obj->full_name; ?></td>
            <td><?php echo $obj->address; ?></td>
            <td><?php echo $obj->phone; ?></td>
          </tr>
    <?php $id[$index] = $obj->id;
        } else {
          echo '<tr class="hid ' . $obj->hid . '">' ?>
          <td><?php echo $obj->hid; ?></td>
          <td><?php echo $obj->full_name; ?></td>
          <td><?php echo $obj->address; ?></td>
          <td><?php echo $obj->phone; ?></td>
        </tr>
    <?php $hid[$index] = $obj->hid;
        }
    } 
    $hid_unique = array_values(array_unique($hid)); ?>
  </tbody>
</table>

Вроде, через jQuery правильно элементы выбираю, но не работает. Может кто подскажет где ошибся.

<script>
$(document).ready(function() {
  var hid_unique = JSON.parse('<?php echo json_encode($hid_unique); ?>');
  // В массиве hid_unique нужные номера
  $(".hid").hide();
  for ( var i = 0; i < hid_unique.length; i++ ) {
    // Привязываю события по клику
    $(".rmenu " + hid_unique[i]).click(function() {
      $(".hid " + hid_unique[i]).show(); // Показываю скрытые строки с тем же номером
    });}
});
</script>

С PHP проблем нет. Генерит такую разметку (в сокращенном виде):

<tbody>
      <!-- Видимый раздел -->
      <tr>
        <td><a href="#" class="rmenu 101">101</a></td>
        <td>full_name1</td>
        <td>address1</td>
        <td>phone1</td>
      </tr>
     <!-- Не видимый подраздел -->
     <tr class="hid 101" style="display: none;">
       <td>101</td>
       <td>full_name2</td>
       <td>address2</td>
       <td>phone2</td>
     </tr>
</tbody>
Answer 1
 $(".rmenu " + hid_unique[i]).click(function() {
  $(".hid " + hid_unique[i]).show();

Точку перед именем второго класса потеряли.

И если классы у одного элемента, то без пробела. Пробел в селекторе значит, что поиск будет внутри элемента по первому селектору(до пробела).

Типа: $('.a .b') ищем элемент с классом b, который в элементе с классом a.

$('.a.b') ищем элемент с классами: a, b.

READ ALSO
Ошибка в запросе PHP PDO INSERT MYSQ

Ошибка в запросе PHP PDO INSERT MYSQ

Не выполняется запрос:

172
Android и MySQL через PHP и Json

Android и MySQL через PHP и Json

Посоветуйте, как наиболее свежие источники или литературу, в которой можно узнать про соединение android приложения c MySQL с помощью PHP и Json и примеры...

181
Почему не работает вывод категорий?

Почему не работает вывод категорий?

Не работает вывод категорий

202