2010-07-09 2 views
3

Я использовал jQuery table sorter plugin в своем коде. Он отлично работает, пока я не делаю запрос ajax для динамического загрузки данных таблицы. Я использую комбинированные поля для фильтрации содержимого таблицы с помощью ajax. Я прочитал несколько сообщений, которые говорят, что использование $("table").trigger("update"); может решить мою проблему. Я попробовал это с моим кодом, но проблема все еще там.Плагин jQuery tablesorter не работает после вызова AJAX

Есть ли другой способ решить эту проблему? Пожалуйста, помогите мне разобраться в решении. Я действительно застрял плохо. Любая помощь будет оценена по достоинству. Ниже мой код:

$(document).ready(function() { 
    $("#myTable").tablesorter({ 
     widthFixed: true, 
     widgets: ['zebra'], 
     headers: { 
      0: { 
       sorter: false 
      } 
     } 
    }).tablesorterPager({ 
     container: $("#pager") 
    }); 

    $("#tag").change(function (event) { 
     $('#myTable').trigger("update"); 
     $("#myTable").tablesorter(); 
    }); 
}); 

Здесь тег идентификатор в поле со списком с именем тега и MYTABLE является идентификатор таблицы с сортировщик пейджера плагин.

+0

где ваш вызов ajax? – Reigel

ответ

1

Непонятно, какой механизм вы используете для вызова AJAX, но если это ASP.NET UpdatePanel, то после завершения вызова AJAX вам нужно будет перестроить ваши события jQuery.

Добавьте следующую строку в ваш сценарий

var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_beginRequest(function(sender, args) { 
    // Code to rebind your UI 
}); 

Примечание: работает только если вы используете ASP.NET AJAX

0

Проблема заключается в том, что вы звоните в $('#myTable').trigger("update"); код, когда изменяется поле со списком , а не когда вы получите ответ от вашего запроса AJAX. Если вы используете ASP.NET AJAX, попробуйте ввести код ericphan. Если вы используете JQuery AJAX, попробовать что-то вроде этого:

$.get('http://site.com/request-address', function(data) { 

    // Code you're using to replace the contents of the table 

    // Code to rebind the tablesorter 
    $('#myTable').trigger("update"); 
    $("#myTable").tablesorter(); 
}); 

Таким образом, вы повторно связав TableSorter нового содержания таблицы, а не старое содержимого, которые будут заменять.

1

Новые элементы DOM не привязаны к событиям JavaScript. jQuery обрабатывает аналогичную проблему, используя ее «живую» функцию. Как только вызов AJAX завершится, запустите javascript в документе document.ready().

1

Я бы обернул функцию tablesorter в ее собственную функцию.

Тогда, когда вам нужно снова запустить его - просто позвоните ему снова.

$(document).ready(function() { 
    function resortTable(){ 
      $("#myTable").tablesorter({ 
      widthFixed: true, 
      widgets: ['zebra'], 
      headers: { 
       0: { 
        sorter: false 
       } 
      } 
     }).tablesorterPager({ 
      container: $("#pager") 
     }); 
    } 

     $("#tag").change(function() { 
      resortTable(); 
     }); 
}); 
+0

даже не знаю, почему это работает, но это так ... Я также использую jPaginator для разбивки на страницы, так что добавил, что ДОПОЛНИТЕЛЬНО в моей функции также. Хорошая работа, разрывает мои волосы в течение нескольких дней на этом! ! –

+0

здесь #tag - это что? – Sravanti

+0

@Venkat Re OP: «Здесь тег - это идентификатор поля со списком с тегом, а myTable - это идентификатор таблицы с плагином для плеера-сортировщика». –

0

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

$('#myTable').tablesorter(); 

еще раз после моего вызова AJAX.

 Смежные вопросы

  • Нет связанных вопросов^_^