JQuery TableSorter добавил данные, не сортируя - PullRequest
2 голосов
/ 27 декабря 2010

Я тоже пытаюсь добавить данные в таблицу с помощью плагина tableorter (http://tablesorter.com) Я использую следующий код:

<table id="sortme" border="1" style="width: 200px;">             
<thead>
    <tr>
        <th>first name</th>
        <th>last name</th>
        <th>age</th>
    </tr>
</thead>
<tbody>
       <tr>
          <td>will</td>
          <td>smith</td>
          <td>1</td>
      </tr> 
...................
</tbody>
</table>
<a href="#" id="test">Click me!</a>

И

$(document).ready(function() {
 var i = 5;
 $("#sortme").tablesorter({
     sortList: [[2,0]]         
 }); 
 $("#test").click(function() {
     $("#sortme tbody").append('<tr><td>NEW</td><td>NEW</td><td>'+(i++)+'</td></tr>');
     $("#sortme").trigger("update");
     var s = [[2,0]];
     $("#sortme").trigger("sorton",[s]);
     return false;
 });
});

Проблема в том, что добавленная строка остается наверху, почему? Смотрите пример: http://jsfiddle.net/jmU3Z/8/

Ответы [ 2 ]

1 голос
/ 29 июля 2011

На случай, если кто-нибудь еще наткнется на это.

К моменту обработки события sorton DOM еще не был назначен table.config.parsers.Обработка событий «sorton» должна быть заключена в тайм-аут в 1 миллисекунду.

Замените существующее связывание «sorton» в jquery.tablesorter.js (строка ~ 803) следующим:

}).bind("sorton", function (e, list) {
    var me = this;
    setTimeout(function () {
        $(this).trigger("sortStart");
        config.sortList = list;
        // update and store the sortlist
        var sortList = config.sortList;
        // update header count index
        updateHeaderSortCount(me, sortList);
        // set css for headers
        setHeadersCss(me, $headers, sortList, sortCSS);
        // sort the table and append it to the dom
        appendToTable(me, multisort(me, sortList, cache));
    }, 1);
0 голосов
/ 27 декабря 2010

Ты проблема это [s].Ваш параметр сортировки уже является массивом, просто передайте ему переменную, а не переменную в массиве.

$("#sortme").trigger("sorton",s); 

Работает для меня, FF4.

...