#javascript #jquery #datatable
#javascript #jquery #datatable
Вопрос:
Как получить объект данных, щелкнув по ячейке.Я создал таблицу и использовал datatable.Я хочу получить географию и тип клиента по щелчку ячейки, который я пробовал как
$('#table tbody').on( 'click','td', function () {
//alert ('clicked');
//var data1 = table.row().data();
var data1 = table.row( $(this).parents('tr') ).data();
console.log(data1);
alert( data1[0] "'s Customer type: " data1[ 2 ] );
} );
мой идентификатор таблицы — table, и я получил ответ, как показано ниже, в консоли для console.log(data1);
{Geography: "APAC", Current: "0", CustomerType: "AMRevenue", DSO: "0", OverDue: "0"}
getting undefined for data1[0] how to get the geo and customer type
Ответ №1:
Сначала вам нужно назначить переменную в качестве таблицы для инициализации datatable amp; в datatable есть один метод InitComplete, поэтому из этого метода можно динамически получить идентификатор таблицы, а затем использовать функциональность метода click внутри метода InitComplete, как показано в приведенном ниже коде. Итак, tr из tbody и получаем значение метода table.row(this).data().
Я надеюсь, что приведенный ниже фрагмент вам очень поможет.
$(document).ready(function() {
var table = $('#table').DataTable({
columns: [
{ title: "Geography" },
{ title: "Current" },
{ title: "Customer Type" },
{ title: "DSO" },
{ title: "OverDue" }
],
initComplete: function(settings, json){
$('#' settings.sTableId ' tbody tr').on('click', function(){
var data = table.row(this).data();
console.clear();
console.log('Geography=> ' data[0]);
console.log('Customer Type=> ' data[2]);
});
}
});
});
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<table id="table" class="display" style="width:100%; text-align: center;">
<tbody>
<tr>
<td>APAC</td>
<td>0</td>
<td>AMRevenue</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>CAAP</td>
<td>1</td>
<td>CARevenue</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>JAPA</td>
<td>1</td>
<td>JARevenue</td>
<td>1</td>
<td>0</td>
</tr>
</tbody>
</table>
Ответ №2:
Если вы добавите событие щелчка td
и нажмете на каждое td
, вы сможете получить значение этих td
данных с помощью $(this).text();
. Взгляните на фрагмент ниже и после запуска фрагмента щелкните td
и посмотрите значение.
$("#myTable tbody td").click(function () {
console.log($(this).text());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<table class="table" id="myTable">
<thead>
<tr>
<th>FirstName</th>
<th>LastName</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
<tr>
<td>Jane</td>
<td>Burl</td>
</tr>
</tbody>
</table>
Update:
Если вы нажмете на определенную строку и хотите получить данные всей строки, вы можете просто следовать этому пути:
$("#myTable tbody td").click(function () {
var row = $(this).closest("tr"); // Find the row
var cell1 = row.find("td:nth-child(1)").text(); // Find the first cell's data
var cell2 = row.find("td:nth-child(2)").text(); // Find the second cell's data
console.log(cell1 " " cell2);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<table id="myTable">
<thead>
<tr>
<th>FirstName</th>
<th>LastName</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
<tr>
<td>Jane</td>
<td>Burl</td>
</tr>
</tbody>
</table>
Ответ №3:
Я думаю, вы пропустили какую-то мелочь, просто проверьте мой код:
<table id="table" class="display" width="100%"></table>
В файле javascript:
var dataSet = [
[
"Tiger Nixon",
"System Architect",
"Edinburgh",
"5421",
"2011/04/25",
"$320,800"
]
];
$(document).ready(function () {
$("#table").DataTable({
data: dataSet,
columns: [
{ title: "Name" },
{ title: "Position" },
{ title: "Office" },
{ title: "Extn." },
{ title: "Start date" },
{ title: "Salary" }
]
});
var table = $("#table").DataTable();
$("#table tbody").on("click", "tr", function () {
var data = table.row().data();
console.log('data', data);
alert(data[0] "'s salary is: " data[5]);
});
});
Вы получите свои данные в строке