Использование jQuery tableSorter для динамически модифицированной таблицы
-
05-07-2019 - |
Вопрос
Я использую плагин jQuery tableSorter на странице.
К сожалению, сортируемая таблица динамически изменяется, и когда я сортирую после добавления элемента, элемент исчезает, восстанавливая таблицу до состояния, в котором она была при создании tableSorter.
Есть ли способ заставить tableSorter повторно сканировать страницу, чтобы эти новые элементы были отсортированы правильно?
Решение
Я полагаю, что вы можете запустить обновление, используя что-то вроде:
$(table).trigger("update")
Другие советы
Кажется, вы правы.
$(table).trigger("update"); $(table).trigger("appendCache");
делает свое дело.
Как примечание, API таблиц в какой-то момент изменился, поэтому изменились и эти вещи, а также привязка событий. Мое самое большое зависание было попытка выяснить, почему некоторые вещи работали, а другие нет, и это было из-за неправильной версии плагина, несмотря на отсутствие очевидных различий. Р>
$ (таблица) .trigger (" update ");
выдает ошибку
Uncaught TypeError: Cannot read property 'rows' of undefined
Итак, есть функция jquery .ajaxStop ()
, где вызывается tablesorter ()
. Не вызывайте сортировщик таблиц в .ready ()
jQuery(document).ajaxStop(function(){
jQuery("#table_name").tablesorter();
})
который сделал работу
Для тех новичков, как я, которые сталкиваются с проблемой сортировки динамически генерируемых таблиц, вот решение. Ответ, приведенный ранее, верен, но где вы разместите эту команду?
$('#tableId').tablesorter().trigger('update');
Вам нужно разместить его, как только вы добавите данные в таблицу. Ex в моем случае
var tableData = "<thead><tr><th>Name</th><th>Age</th></thead><tbody><tr><td>Izaki</td><td>24</td><tr><tr><td>Serizawa</td><td>25</td></tr>";
$('#tableId').html('tableData');
$('#tableId').tablesorter().trigger('update');