Мне нужен совет для моего tablesorter 2.0 (http://tablesorter.com/docs/#Examples) плагина.Запуск jQuery Tablesorter дважды после асинхронного действия
Сначала я создал таблицу с этой AJAX функции синхронные:
// create head
$('#advies-content').append(
'<thead>'+
'<tr">'+
'<th></th>'+
'<th>Icoon</th>'+
'<th>Afstand</th>'+
'<th>Tijd</th>'+
'<th>Opties</th>'+
'</tr>'+
'</thead>');
// create body
$.each(options,function(key,item){
// make tab content
$('#advies-content').append('<tr id="route-'+item.id+'">');
$('#advies-content').append('</tr>');
// image
$('#route-'+item.id).append('<td valign="top"></td>');
$('#route-'+item.id).append('<td valign="top" align="center"><img src="'+item.image+'"></td>');
// distance
$('#route-'+item.id).append('<td valign="top">'+
'</td>');
// time
$('#route-'+item.id).append('<td valign="top">'+
'</td>');
// distance + time
$('#route-'+item.id).append('<td valign="top">'+
'<h5 class="click-route" mylatlng="'+item.destination+'"><font color="#21bba3">Route bepalen ></font></h5>'+
'<h3>€ '+item.price+' per uur</h3></td>'+
'</td>');
});
После этого я заселить эту таблицу с расстояниями при помощи функции v3 API Google Maps:
// function to handle the distance
calculateDistance(origin,destination).then(function(response) {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
var results = response.rows[0].elements;
var array = [];
array[0] = results[0].distance.text;
array[1] = results[0].duration.text;
return array;
}).done(function(distanceMatrixResult) {
distance = distanceMatrixResult[0];
time = distanceMatrixResult[1];
$('#route-'+item.id).find('td:eq(2)').html(distance);
$('#route-'+item.id).find('td:eq(3)').html(time);
});
Google API эта функция работает асинхронно. Поэтому, когда эта таблица заполнена и заполнена, я хотел бы запустить плагин tablesorter и сделать ее сортируемой. Если функция работает асинхронно, я сделал для нее таймер:
function doTableSorter(){
$("#advies-content").tablesorter();
}
// run on tab click
$('#advies_block li').click(function(){
// function to create and populate table
getSelectedTabData();
// make table sorter
setTimeout(doTableSorter, 500);
});
Первый раз, когда он работает хорошо. Но при выборе другой вкладки tablesorter не работает. Похоже, что он хорошо загружается 1 раз, но при повторном вызове tablesorter не будет загружаться снова.
Что я сделал не так?
** Обновление: добавлены экраны * Перед (таблица сортировщик работы):
После нажатия на вкладке (Tabel сортировщик не работает):
Это не обязательно.Как вы можете видеть в [этой демонстрации] (http://jsfiddle.net/Mottie/abkNM/794/) с помощью вкладок jQuery UI, tablesorter инициализируется при создании вкладки и запускается только метод applyWidgets при открытии второй раз для запуска виджета зебры. Я могу только догадываться о вашем коде, но является ли таблица воссоздана каждый раз, когда открывается вкладка? Если это так, то просто повторите инициализацию tablesorter, нет необходимости удалять таблицу. – Mottie