Я использую плагин jQuery DataTables с отзывчивым аддоном, таким образом я могу динамически отображать и скрывать столбцы в зависимости от размера браузера.
У меня есть столбец с именем Actions
, который пользователь может использовать для редактирования записи, когда нажимается карандаш, содержащийся в этом столбце, я выполняю поиск id
элемента, по которому щелкнули.
Этот механизм работает, только когда таблица не находится в *Режим 1009 *, на самом деле, когда таблица находится в отзывчивом состоянии, и я расширяю другие столбцы:
если я нажму на карандаш, я получу:
Невозможно прочитать свойство 'id' из неопределенного
, так как плагин не может найти строку выбранного элемента.
Я создалфрагмент и JSFIDDLE
$(document).ready(function() {
var table = $('#example').DataTable({
"columns": [{
data: 'name'
},
{
data: 'position'
},
{
data: 'office'
},
{
data: 'age'
},
{
data: 'salary'
},
{
data: null,
render: function(data, type, row) {
return '<a href="javascript:void(0)" data="' + data.id + '" class="btn btn-link btn-warning btn-icon btn-sm edit"><i class="fas fa-pencil-alt"></i></a>';
}
}
],
responsive: true
});
var users = [{
id: 1,
name: "Penny",
position: "waitress",
office: "none",
age: "25",
salary: "1550$"
},
{
id: 2,
name: "Sheldon",
position: "physical",
office: "university",
age: "39",
salary: "8435$"
},
{
id: 3,
name: "Leonard",
position: "physical",
office: "university",
age: "35",
salary: "7842$"
},
];
$('#example').DataTable().clear().draw();
$('#example').DataTable().rows.add(users);
$('#example').DataTable().draw();
$('#example').on('click', '.edit', function(element) {
var tr = $(element.target).closest('tr');
var data = table.row(tr).data();
console.log(data.id);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/v/dt/dt-1.10.18/r-2.2.2/datatables.min.js"></script>
<link href="https://cdn.datatables.net/v/dt/dt-1.10.18/r-2.2.2/datatables.min.css" rel="stylesheet"/>
<link href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" rel="stylesheet"/>
<table id="example" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Salary</th>
<th class="sorting_desc_disabled sorting_asc_disabled">Action</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Salary</th>
<th class="sorting_desc_disabled sorting_asc_disabled">Action</th>
</tr>
</tfoot>
<tbody>
</tbody>
</table>
Что-то я не так сделал?Или это ошибка?Есть ли способ это исправить?
Заранее спасибо.