Я использую SignalR
для ввода данных в таблицу при ее создании.Сортировка таблицы после вставки данных с помощью SignalR
Моя сортировка в таблице, похоже, не работает.
Это мой JQuery код:
$(function() {
var chat = $.connection.runnerHub;
chat.client.refreshTable = function (table) {
$('table:last').after('<table id="' + table + '"><thead><tr><td>' + table + '</td></tr></thead><tbody></table>')
};
chat.client.refreshSubTable = function (table, categoryName) {
if ($('#' + table + ' tbody tr').length > 0) {
$('#' + table + ' tbody tr:last').after("<tr><td><a href='/Forum/" + table + "/" + categoryName + "' >" + categoryName + "</a></td></tr>")
} else {
$('#' + table + ' tbody').append("<tr><td><a href='/Forum/" + table + "/" + categoryName + "' >" + categoryName + "</a></td></tr>")
}
sortTable($('#' + table), 'asc');
};
$.connection.hub.start().done(function() {
});
});
function sortTable(table, order) {
var asc = order === 'asc',
tbody = table.find('tbody');
tbody.find('tr').sort(function(a, b) {
if (asc) {
return $('td:first', a).text().localeCompare($('td:first', b).text());
} else {
return $('td:first', b).text().localeCompare($('td:first', a).text());
}
}).appendTo(tbody);
}
$('.add').click(function() {
$('#Class > tbody').append("<tr><td><a href=/Forum/Class/Run>run</a></td></tr>")
sortTable($('#Class'), 'asc');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="Class">
<thead>
<tr>
<td>Class</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<a href="/Forum/Class/Druid">Druid</a>
</td>
</tr>
<tr>
<td>
<a href="/Forum/Class/Hunter">Hunter</a>
</td>
</tr>
<tr>
<td>
<a href="/Forum/Class/Paladin">Paladin</a>
</td>
</tr>
<tr>
<td>
<a href="/Forum/Class/Mage">Mage</a>
</td>
</tr>
<tr>
<td>
<a href="/Forum/Class/Priest">Priest</a>
</td>
</tr>
<tr>
<td>
<a href="/Forum/Class/Rogue">Rogue</a>
</td>
</tr>
<tr>
<td>
<a href="/Forum/Class/Shaman">Shaman</a>
</td>
</tr>
<tr>
<td>
<a href="/Forum/Class/Warlock">Warlock</a>
</td>
</tr>
<tr>
<td>
<a href="/Forum/Class/Warrior">Warrior</a>
</td>
</tr>
</tbody>
</table>
<button class="add"> add </button>
Когда я отладки мой путь думал Jquery, это добавляет tr
, но и это вызывает sortTable()
но DonT сортировать его алфавитный.
Кажется, я не могу найти проблему, и поэтому я надеюсь, что кто-то может мне помочь.
Параметр 'если ... то ...' в 'refreshSubTable' не требуется. Обе строки ('$ ('#' + table + 'tbody tr: last'). After (...)' и '$ ('#' + table + 'tbody'). Append (...)') добавит новую строку после последней строки в таблице. Это также будет работать, если строк нет. – Andreas
Спасибо, но все равно не решим проблему –
Скрипт должен работать ([скрипка] (https://jsfiddle.net/92supaw1/)). Можете ли вы добавить разметку? Любые ошибки в консоли? – Andreas