Le tri des lignes de la table selon le tableau d'en-tête de colonne à l'aide de javascript ou jquery
J'ai quelque chose comme ce
<table><thead>
<tr>
<th>S.L.</th>
<th>name</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Ronaldo</td>
</tr>
<tr>
<td>2</td>
<td>Messi</td>
</tr>
<tr>
<td>3</td>
<td>Ribery</td>
</tr>
<tr>
<td>4</td>
<td>Bale</td>
</tr>
</tbody>
</table>
Ce que je veux, c'est de trier les <tr>
de <tbody>
lorsque l'utilisateur clique dessus th
dans l'ordre croissant ou décroissant alternativement en fonction des éléments suivants th
cliqué.
- donc, si quelqu'un clique sur le
S.L
th
puis il montre les lignes de la table dans
descendant puis montant de l'ordre alternativement à chaque clic. - Lorsque l'utilisateur clique dessus
Name
th
il doit afficher les noms dans l'ordre décroissant
l'ordre et ensuite par ordre croissant sans changement dans leur
S.L
ici est violon
- Travail Violon... La question d'origine ici.
- votre "Travail " Fiddle" ne fonctionne pas.
- ici, vous allez, mon "Travail " Fiddle" a commencé à travailler
- u peut mettre en œuvre dans jquery en utilisant ma solution coz je suis un peu faible en javascript @Bhavik
here you go
- je l'ai eu mais ma curiosité est de savoir comment tu fait ça ? canu expliquer dans une réponse ? coz je n'ai pas compris les fonctions u utilisé. @Bhavik
- Mis à jour avec quelques commentaires.. jsfiddle.net/a2seK/6
- mais si nous ne savons pas le deuxième paramètre dans votre fonction
sort_table
je.e lanth child
comment le faisons-nous ? @Bhavik - Effectuez l'une des solutions de l'utilisation memoization, qui est, stockent-ils leurs résultats afin qu'ils puissent être utilisées? D'y penser un peu plus difficile, cela peut nécessiter une actualisation de la page entière si les lignes de la table sont ajoutées/modifiées/supprimées. Une autre idée est de créer un structure de données supplémentaires(s) et de pré-trier les données.
Vous devez vous connecter pour publier un commentaire.
Que vous aimeriez voir cette page:
http://blog.niklasottosson.com/?p=1914
Je suppose que vous pouvez aller quelque chose comme ceci:
DÉMO:http://jsfiddle.net/g9eL6768/2/
HTML:
JS:
Espère que cette aide.
sortTable(variable,0)
&sortTable(variable,1)
?sortTable
sur ma réponse ci-dessus. Sur lesortTable(f,n)
,f
: 1 ordre croissant, -1 par ordre décroissant , etn
: n-ième enfant(<td>) de <tr>n
detd
? @naotatable headers
un nombre inconnu de temps, comme le fait legoogle forms
alors je ne sais pas combien de la table des en-têtes de mon utilisateur crée.....SL
dans les chiffres des dizaines ou des milliers ou même plus son origine d'un problème et d'erreur lors de la commande. Supposons que s.l sont dans la gamme de 1-1000 ensuite, il serait de l'ordre de façon incorrecte.Offrant un tri interactif de traitement de plusieurs colonnes n'est rien de trivial.
Sauf si vous voulez écrire une bonne quantité de code de la logique de gestion de plusieurs lignes de clics, la modification et l'actualisation d'une page de contenu, gestion des algorithmes de tri pour les grandes tables... alors vous êtes vraiment mieux d'adopter un plug-in.
tablesorter, (avec des mises à jour par Mottie) est mon préféré. Il est facile à mettre en oeuvre et très personnalisable. Il suffit d'ajouter la classe
tablesorter
à la table que vous souhaitez trier, puis appeler le plugin tablesorter dans un document de l'événement load:Vous pouvez parcourir la documentation pour découvrir les fonctionnalités avancées.
$()
est un raccourci pour$( document ).ready()
l'utilisation de Javascript sort() fonction
Si vous voulez ascendant vous avez juste à renverser la > et <
Changer la logique en conséquence pour vous.
VIOLON
Vous pouvez utiliser jQuery DataTables plugin pour l'application de la colonne de tri dans la direction souhaitée.
Le Tri des colonnes à l'aide de DataTable
JS:
HTML:
J'ai travaillé sur une fonction pour travailler au sein d'une bibliothèque pour un client, et ont eu beaucoup de mal à garder l'INTERFACE utilisateur sensibles au cours de la sorte (même avec seulement quelques centaines de résultats).
La fonction est de recourir, pour l'ensemble de la table chaque pagination AJAX, que de nouvelles données peuvent nécessiter l'injection de plus haut. C'est ce que j'ai eu jusqu'à présent:
table
est l'ID de la table en cours de tri.sort-attribute
,sort-direction
et l'attribut de la colonnecolumn
sont tous pré-défini.À l'aide de quelques-uns des détails ci-dessus, j'ai réussi à améliorer les performances un peu.
En principe, le code fonctionne parfaitement, mais c'est terriblement lent... il y a aucune solution pour améliorer les performances?