Eu tenho uma tabela HTML muito simples com 4 colunas:
Facility Name, Phone #, City, Specialty
Desejo que o usuário possa classificar apenas por Nome da instalação e Cidade .
Como posso codificar isso usando jQuery?
jquery
sorting
html-table
tony noriega
fonte
fonte
Respostas:
Se você quiser evitar todos os sinos e assobios, posso sugerir este
sortElements
plugin simples . Uso:E uma demo. (clique nos cabeçalhos das colunas "cidade" e "instalação" para classificar)
fonte
Error: illegal character
o html não é exatamente o mesmo, também tenho thead e tboy, você pode me ajudar com isso, por favor?$.text([a]) == $.text([b])
usar,$.text([a]).toUpperCase() == $.text([b]).toUpperCase()
será corrigido.Me deparei com isso, e pensei em jogar meus 2 centavos. Clique nos cabeçalhos das colunas para classificar em ordem crescente e novamente para classificar em ordem decrescente.
** Atualização: 2018
fonte
td
s, por exemplo,<a href="#">Test</a>
a classificação diz respeito a<a...
. Para classificar apenas por texto, você precisa alterarhtml()
na última linha paratext()
.comparer(..)
se souber exatamente qual formato deseja suportar). Enquanto isso, se vocêyyyy-MM-dd
"string
" usar , a classificação ordenará os dados para você. por exemplo jsbin.com/pugedip/1De longe, o mais fácil que eu usei é: http://datatables.net/
Surpreendentemente simples ... apenas certifique-se de seguir a rota de substituição do DOM (IE, construindo uma tabela e permitindo que o DataTables a reformate) e certifique-se de formatar sua tabela
<thead>
e<tbody>
ou ela não funcionará. Essa é a única pegadinha.Também há suporte para AJAX, etc. Como em todos os códigos realmente bons, também é MUITO fácil desativar tudo. Você ficaria surpreso com o que poderia usar. Comecei com uma DataTable "vazia" que classificou apenas um campo e depois percebi que alguns dos recursos eram realmente relevantes para o que estou fazendo. Os clientes adoram os novos recursos.
Pontos de bônus para DataTables para suporte completo ao ThemeRoller ....
Eu também tive sorte com o tablesorter, mas não é tão fácil, nem tão bem documentado e possui apenas recursos ok.
fonte
Acabamos de começar a usar esta ferramenta: https://plugins.jquery.com/tablesorter/
Há um vídeo sobre seu uso em: http://www.highoncoding.com/Articles/695_Sorting_GridView_Using_JQuery_TableSorter_Plug_in.aspx
Com uma mesa simples
fonte
Minha resposta seria "tenha cuidado". Muitos complementos de classificação de tabelas do jQuery classificam apenas o que você passa para o navegador. Em muitos casos, você deve ter em mente que as tabelas são conjuntos dinâmicos de dados e podem conter um zilhão de linhas de dados.
Você menciona que possui apenas 4 colunas, mas, muito mais importante, não menciona quantas linhas estamos falando aqui.
Se você passar 5000 linhas para o navegador a partir do banco de dados, sabendo que a tabela de banco de dados real contém 100.000 linhas, minha pergunta é: qual é o sentido de tornar a tabela classificável? Para fazer uma classificação adequada, você precisará enviar a consulta de volta ao banco de dados e permitir que o banco de dados (uma ferramenta realmente projetada para classificar dados) faça a classificação por você.
Em resposta direta à sua pergunta, o melhor complemento de classificação que eu me deparei é a Ingrid. Há muitas razões pelas quais eu não gosto desse complemento ("sinos e assobios desnecessários ..." como você o chama), mas um de seus melhores recursos em termos de classificação é que ele usa ajax e não Não presuma que você já passou todos os dados antes de fazer sua classificação.
Reconheço que esta resposta provavelmente é um exagero (e com mais de 2 anos de atraso) para seus requisitos, mas fico aborrecido quando os desenvolvedores da minha área ignoram esse ponto. Então, espero que outra pessoa compreenda.
Eu me sinto melhor agora.
fonte
Adoro essa resposta aceita, no entanto, raramente você obtém requisitos para classificar html e não precisa adicionar ícones indicando a direção da classificação. Peguei o exemplo de uso da resposta de aceitação e o corrigi rapidamente, simplesmente adicionando bootstrap ao meu projeto e adicionando o seguinte código:
<div></div>
dentro de cada um
<th>
para que você tenha um lugar para definir o ícone.setIcon(this, inverse);
do uso da resposta aceita, abaixo da linha:
th.click(function () {
e adicionando o método setIcon:
Aqui está uma demonstração . - Você precisa executar a demonstração no Firefox ou IE ou desativar a verificação do tipo MIME do Chrome para que a demonstração funcione. Depende do plug-in sortElements, vinculado pela resposta aceita, como um recurso externo. Apenas um alerta!
fonte
Esta é uma boa maneira de classificar uma tabela:
O violino pode ser encontrado aqui:
https://jsfiddle.net/e3s84Luw/
A explicação pode ser encontrada aqui: https://www.learningjquery.com/2017/03/how-to-sort-html-table-using-jquery-code
fonte
Aqui está um gráfico que pode ser útil para decidir qual usar: http://blog.sematext.com/2011/09/19/top-javascript-dynamic-table-libraries/
fonte
A resposta de @Nick Grealy é ótima, mas não leva em consideração os possíveis
rowspan
atributos das células do cabeçalho da tabela (e provavelmente as outras respostas também não o fazem). Aqui está uma melhoria da resposta de @Nick Grealy que corrige isso. Com base nesta resposta também (obrigado @Andrew Orlov).Também substituí a
$.isNumeric
função por uma personalizada (obrigado @zad) para fazê-la funcionar com versões mais antigas do jQuery.Para ativá-lo, adicione
class="sortable"
à<table>
tag.fonte
Você pode usar um plugin jQuery ( breedjs ) que fornece classificação, filtro e paginação:
HTML:
JS:
Exemplo de trabalho em violino
fonte
Este não desliga o navegador, é fácil de configurar:
fonte
À resposta de James, mudarei apenas a função de classificação para torná-la mais universal. Dessa forma, ele classificará o texto em ordem alfabética e os números como números.
fonte
Outra abordagem para classificar a tabela HTML. (com base na classificação HTML do W3.JS )
fonte
Acabei usando a resposta de Nick (a mais popular, mas não aceita) https://stackoverflow.com/a/19947532/5271220
e combinou-o com o https://stackoverflow.com/a/16819442/5271220, mas não quis adicionar ícones ou fontawesome ao projeto. Os estilos CSS para sort-column-asc / desc Eu fiz cores, preenchimentos, bordas arredondadas.
Também o modifiquei para ir por classe e não por qualquer, para podermos controlar quais são classificáveis. Isso também pode ser útil mais tarde, se houver duas tabelas, embora mais modificações precisem ser feitas para isso.
corpo:
... mais abaixo no corpo
funções:
fonte
Meu voto! jquery.sortElements.js e jquery simples
Muito simples, muito fácil, obrigado nandhp ...
Dei uma melhorada do código
One cod better! Função para Todas as tabelas em todos os Th em todos os tempos ... Olha!
DEMO
fonte
.live()
.