Проблема с tablesorterPager при удалении / обновлении строк таблицы - PullRequest
1 голос
/ 07 июля 2011

Я пытаюсь использовать сортировщик таблицы jquery с нумерацией страниц. У меня проблема, когда я делаю динамическое обновление таблицы. После нажатия кнопки «#append» (см. Код) я изменяю содержимое всего тела таблицы. Пагинатор распознает это действие, но когда я нажимаю «Далее», он переходит на две страницы вперед после первого обновления, на три страницы вперед после второго обновления и т. Д. Вместо одной страницы ...

Я не знаю, что я делаю неправильно. Вот мой код:

$(document).ready(function() {
      $("#myTable").tablesorter( {sortList: [[0,0], [1,0]]} , {headers: {1: {sorter: false}, 2: {sorter: false}, 3: {sorter: false}, 4: {sorter: false}, 5: {sorter: false}, 6: {sorter: false}, 7: {sorter: false}}})
      .tablesorterPager({container: $("#pager")});
      $("#append").click(function() {
        // add some html
        $.post("log_msg.asp", $("#msgForm").serialize(),
        function(data) {
          $('body').find("#myTable colgroup").remove();
          $("#msgs").html($("#msgs" , data).html());
          //$("#myTable").trigger("update")
          $('body').find("#myTable")
          .tablesorter( { widthFixed: true, widgets: ['zebra']} )
          .tablesorterPager( { container: $("#pager") } );
      });
      // let the plugin know that we made a update
      return false;
    });

}); 

Любая подсказка?

Спасибо заранее ура Магда

Ответы [ 2 ]

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

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

$(document).ready(function() {
      $("#myTable").tablesorter( {sortList: [[0,0], [1,0]]} , {headers: {1: {sorter: false}, 2: {sorter: false}, 3: {sorter: false}, 4: {sorter: false}, 5: {sorter: false}, 6: {sorter: false}, 7: {sorter: false}}})
      .tablesorterPager({container: $("#pager")});
      $("#append").unbind('click').click(function() {
        // add some html
        $.post("log_msg.asp", $("#msgForm").serialize(),
        function(data) {
          $('body').find("#myTable colgroup").remove();
          $("#msgs").html($("#msgs" , data).html());
          //$("#myTable").trigger("update")
          $('body').find("#myTable")
          .tablesorter( { widthFixed: true, widgets: ['zebra']} )
          .tablesorterPager( { container: $("#pager") } );
      });
      // let the plugin know that we made a update
      return false;
    });

}); 
0 голосов
/ 02 августа 2011

Я попробовал это .. Я открыл файл jquery.tablesorter.pager.js и немного изменил его следующим образом .. Внутри функции конструкции добавьте следующие две строки

 $(config.cssNext,pager).unbind('click');
 $(config.cssPrev,pager).unbind('click');

чуть выше

$(config.cssFirst,pager).click(function() {
    moveToFirstPage(table);
    return false;
});

Это сработало для меня .. надеюсь, это сработает и для вас.Удачи!Винод

...