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?

Foi útil?

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');
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top