2008-10-29 4 views
17

Я использую плагин jQuery tableSorter на странице.Использование jQuery tableSorter в динамически модифицированной таблице

Unfortunatley, отсортированная таблица динамически модифицируется, и когда я сортирую после добавления элемента, элемент исчезает, восстанавливая таблицу до состояния, в котором она была, когда был создан tableSorter.

Есть ли способ, которым я могу заставить tableSorter повторно просмотреть страницу, чтобы эти новые элементы были отсортированы правильно?

ответ

21

Я считаю, что вы можете запустить обновление используя что-то вроде:

$(table).trigger("update") 
12

Кажется, вы правы.

 
$(table).trigger("update"); 
$(table).trigger("appendCache"); 

делает трюк.

В качестве примечания, API-интерфейс tablesorter изменился в какой-то момент, поэтому эти вещи были изменены, а также привязка события. Мое самое большое зависание пыталось понять, почему некоторые вещи работали, а другие - нет, и это было из-за неправильной версии плагина, несмотря на то, что не было очевидного различия.

+0

Это должен быть принятый ответ. Без части «appendCache» я могу сортировать только в одном направлении (1-й щелчок, второй ничего не делает), как в ответе Джоша. Но с этим все работает так, как ожидалось. Обратите внимание, что если обновление происходит в другом блоке кода, из которого вы создали объект tablesorter, вы можете просто его воссоздать. Предположим, что ваш табличный указатель имеет идентификатор «ts». Do `$ (" # ts "). Tablesorter(). Trigger (" update ");` и то же для `appendCache`. Или: `$ table = $ (" # ts "). Tablesorter(); $ Table.trigger ("обновление"); $ table.trigger ("appendCache"); ` – 2015-05-03 19:18:25

3

$(table).trigger("update"); The бросает ошибку

Uncaught TypeError: Cannot read property 'rows' of undefined 

Итак, есть функция JQuery .ajaxStop() где tablesorter() называется. Не называйте TableSorter в .ready()

jQuery(document).ajaxStop(function(){ 
     jQuery("#table_name").tablesorter(); 
    }) 

, который сделал работу

0

Для тех новичков, как я, которые сталкиваются проблемы с сортировкой динамической сгенерированной таблицы, вот решение. Правильный ответ, но где вы поместите эту команду?

$('#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'); 
Смежные вопросы