Плагин JQuery Tablesorter - обновление сортировки после измененных строк

Я использую tablesorter 2.0 и обновляю значения ячеек с помощью ajax. После вызова мне нужно будет снова заказать строки, но $('#thisTable').trigger('update') мне не помогает.

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

 $('#thisTable').tablesorter({
   textExtraction: function(node) {
     return node.getElementsByTagName('input')[0].value; 
   }
 });

Любая помощь будет оценена по достоинству.

-- Кри


person kree    schedule 26.10.2010    source источник


Ответы (4)


Вы можете найти ответ в сортировщике таблиц docs. Вы должны инициировать другое событие sorton.

person Beniamin    schedule 26.10.2010
comment
Да, я прочитал это, но я не знаю, какой столбец был отсортирован до обновления... Сортону нужны столбцы сортировки в качестве параметров. - person kree; 26.10.2010
comment
Фактические столбцы сортировки хранятся в: $('#thisTable').get(0).config.sortList. Если он не определен, вы можете добавить сортировку по умолчанию. - person Beniamin; 26.10.2010
comment
Спасибо! Это было то, что мне нужно! :) - person kree; 26.10.2010

это мой код

//append some content to the tbody
$('table').trigger('update');    
var $sort = $('table').get(0).config.sortList;
$("table").trigger("sorton",[$sort]); 

Вышеприведенное вызывается после того, как я добавляю несколько строк в тело таблицы. Я могу видеть значения $sort, но функция триггера не сортирует вновь добавленные строки.

person Aditya    schedule 23.01.2012
comment
Я включил режим отладки сортировщика таблиц. Триггер обновления обновляет кэш таблицы, однако триггер sorton сортирует ранее кэшированные данные. Таким образом, новые данные не сортируются. Чтобы синхронизировать их, я поместил $(table).trigger(sorton,[$sort]); в setTimoutblock с задержкой 50мс. Но это всего лишь обходной путь, но я думаю, это не правильное решение. Может ли кто-нибудь предложить правильное решение? - person Aditya; 23.01.2012

У меня есть небольшое изменение в исходном коде. Я добавил параметр в обработчик события обновления, чтобы запросить сортировку.

$("#MyTable").trigger('update') будет работать как обычно.

$("#MyTable").trigger('update', true) запросит сортировку после обновления.

$this.bind("update", function (e, sort) {
   var me = this;
   setTimeout(function () {
       // rebuild parsers.
       me.config.parsers = buildParserCache(
       me, $headers);
       // rebuild the cache map
       cache = buildCache(me);
       // ADDED
       if (sort) $(me).trigger('sorton', [me.config.sortList]);
   }, 1);
});
person Renaud    schedule 15.02.2014
comment
это должно быть приемлемой функцией для источника таблицы. вы пытались внести свой вклад в github? не уверен насчет срабатывания sorton. наверное есть более прямой путь? - person mwallisch; 01.07.2015

Что касается реализации события «обновление», оно выполняет обновление после тайм-аута в 1 мс. либо эту функцию надо переписать в сортировщике таблиц, либо с помощью обратного вызова.

$this.bind("update", function () {
  var me = this;
  setTimeout(function () {
    // rebuild parsers.
    me.config.parsers = buildParserCache(
    me, $headers);
    // rebuild the cache map
    cache = buildCache(me);
}, 1);
person Benoit    schedule 05.01.2017