Usando jQuery tablesorter na tabela modificada dinamicamente
-
05-07-2019 - |
Pergunta
Eu estou usando o plugin jQuery tablesorter em uma página.
Unfortunatley, a tabela que está sendo classificada é modificado de forma dinâmica, e quando eu meio depois de adicionar um elemento, os desaparece elemento, restaurando a mesa para o estado em que estava quando o Tablesorter foi criado.
Existe alguma maneira que eu possa forçar Tablesorter para verificar novamente a página para que estes novos elementos são classificadas corretamente?
Solução
Eu acredito que você pode desencadear uma atualização usando algo como:
$(table).trigger("update")
Outras dicas
Parece que você está correto.
$(table).trigger("update"); $(table).trigger("appendCache");
faz o truque.
Como uma nota, a API tablesorter mudou em algum momento, assim que estas coisas tem mudado, assim como a ligação evento. Meu maior hangup estava tentando descobrir por que algumas coisas funcionaram e outras não, e foi devido a ter uma versão errada do plugin, apesar de não haver distinção óbvia.
O $(table).trigger("update");
lança erro
Uncaught TypeError: Cannot read property 'rows' of undefined
Assim, há uma .ajaxStop()
função jQuery onde tablesorter()
é chamado. Não chame tablesorter em .ready()
jQuery(document).ajaxStop(function(){
jQuery("#table_name").tablesorter();
})
que fez o trabalho
Para os iniciantes como eu que estão enfrentando problema com a classificação dinâmica gerada mesa, aqui está a solução. A resposta dada anteriormente estão corretas, mas onde você colocar esse comando?
$('#tableId').tablesorter().trigger('update');
Você precisa colocá-lo assim que você anexa os dados para a tabela. Ex no meu caso
var tableData = "<thead><tr><th>Name</th><th>Age</th></thead><tbody><tr><td>Izaki</td><td>24</td><tr><tr><td>Serizawa</td><td>25</td></tr>";
$('#tableId').html('tableData');
$('#tableId').tablesorter().trigger('update');