Я хочу создать динамическую таблицу в bootstrap/jquery, похожую на this one В этом примере данные жестко закодированы, поэтому я подумал об изменении его с данными, поступающими от json. Кроме того, каждая строка в таблице должен иметь гиперссылку добавил, так что мой JQuery код выглядит следующим образом:Почему мои данные в загрузочном блоке не отображают данные?
$('#dataTables-example').DataTable({
responsive: true
});
var data = '[{"number":"1","id":"2","price":"100.70","date":"2015-10-18 03:00:00","hidden":"21"},
{"number":"2","id":"2","price":"88.20","date":"2015-10-18 04:00:00","hidden":"22"}]';
json = JSON.parse(data);
$.each(json, function(i, v) {
$('<tr/>', {
html: [$('<td/>', {
text: v.number
}), $('<td/>', {
text: v.id
}), $('<td/>', {
text: v.price
}), $('<td/>', {
text: v.date
}), $('<td/>', {
html: [
$('<a/>', {
href: '#',
class: 'show-details',
text: 'show details',
data: { id: v.hidden },
click: function() {
var id = $(this).data('id');
console.log(id);
alert(id);
}
})
]
})]
}).appendTo('#dataTables-example tbody')
})
В моем HTML я жёстко заголовок таблицы:
<div class="panel-body">
<div class="dataTable_wrapper">
<table class="table table-striped table-bordered table-hover" id="dataTables-example">
<thead>
<tr>
<th>number</th>
<th>id</th>
<th>price</th>
<th>date</th>
<th>show details</th>
<th style="display:none;">hidden identifier</th>
</tr>
</thead>
<tbody></tbody>
</table>
и позже благодаря к моему сценарию я добавляю строки в таблицу. Просто как тот. Однако, как вы можете видеть в моей скрипке:
http://jsfiddle.net/uo8rc5qL/6/
есть проблема, потому что, так как данные не зашиты, таблица думает, что нет строк и отображает определенное сообщение там No data available in table
. Кроме того, когда я нажимаю любое имя столбца для сортировки данных, содержимое исчезает, так как таблица считает, что после сортировки ничего не видно ... Как исправить эту ситуацию?
Спасибо, работает как шарм, еще один вопрос - есть ли способ сделать текст «показать детали» только кликабельным, а не целая ячейка с этой строкой? Кроме того, как я могу добавить соответствующий курсор, когда пользователь наводит этот текст (стандартная гиперссылка)? – user3766930
@ user3766930, да, моя ошибка, забыл нацелить элемент '' только :(обновил скрипку и ответил с обеих исправлений. – davidkonrad
еще один вопрос - я вижу, что вы связываете данные здесь. .data ('id', v.hidden) ', скажите мне - возможно ли связывать более одного значения? Например, я хотел бы привязать v.hidden как id и v.price к цене - это возможно? – user3766930