Отобразить таблицу в td другой таблицы onclick

У меня есть таблица, в которой есть строки с количеством найденных данных. После нажатия на ссылку с номером развертывается вторая таблица, показывающая количество строк. Это действие отлично работает, если таблица имеет только одну строку, но если в ней более одной строки после щелчка по ссылке, таблица развертывается во всех строках, а не только в соответствующей строке. Как я могу решить эту проблему?

1- таблица

<table >
<tr>
<th>date</th>
<th>medicine</th>
</tr>
<?php foreach($rows as $row)
{
?>
<tr>
<td><?=$row->date_val;?></td>
<td>
<?=$row->medicine;?>
<a id = "<?=$row->medicine?>"  class = "deploy-medicine" title = "Deploy" style = "cursor:pointer"><?=$row->Total;?></a>
<div  class = "toggle-medicine" style = "display:none"></div>
</td>
</tr>

<?php
}
?>

</table>

2-JQUERY

$('.deploy-medicine').click(function() {
var medicine = $(this).attr('id');
$.get( "<?php echo base_url();?>admin/get_medicine_name?medicine = "+medicine, function( data ){
$(".toggle-medicine").html(data).slideToggle("slow"); 
}); 

});

3-контроллер

public function get_medicine_name()
{
$medicine =$this->input->get('medicine');
$data['medicine'] = $this->model_admin->get_medicine($medicine);
$this->load->view('medicine',$data);
}

4- МОДЕЛЬ

function get_medicine($data)
{
$this->db->select('inserted_time,operator');
$this->db->from('table_medicine');
$this->db->where('medicine',$data);
$query = $this->db->get();
return $query->result();    
}

5- представление, содержащее таблицу после щелчка

<table>
<tr>
<th>date</th>
<th>Operador</th>
</tr>
<?php foreach($medicine as $row)

{
?>
<tr>
<td><?=$row->inserted_time?></td>
<td><?=$row->operator?></td>
</tr>
<?php } ?>
</table>

Подтвердите, что вы действительно получаете переменную medicine в get_medicine с эхом. Также уникальна ли medicine?

Alex 29.03.2018 20:32

лекарство не уникально, каждая строка - это другое название лекарства. Да, я правильно понял это в get_medicine. Моя цель достигается только тогда, когда у меня есть одна строка, но если у меня их больше, после нажатия на переключатель выполняется во всех строках. Моя проблема в функции JQUERY. Я не знаю, как развернуть результат только в одном td, когда есть много строк.

Prophete Prog 29.03.2018 21:39

Вы действительно должны прояснить это в своем вопросе, поскольку ваш вопрос звучит так, как будто вы хотите получить только одно, а вместо этого получаете все лекарства (проблема с php).

Alex 29.03.2018 21:43
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
3
261
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно найти ближайший td и найти в нем селектор .toggle-medicine.

Это будет работать:

$(document).ready(function() {
  $(".deploy-medicine").click(function() {
    console.info('deploying...');
    var medicine = $(this).attr("id");
    var el = $(this).closest('td').find('.toggle-medicine');
    el.html("Hello World").show();
  });
});

Пример: https://codepen.io/anon/pen/KoowPy

Другие вопросы по теме