J'ai un tableau HTML très simple avec 4 colonnes:
Facility Name, Phone #, City, Specialty
Je veux que l'utilisateur puisse trier uniquement par nom d'établissement et par ville .
Comment puis-je coder cela en utilisant jQuery?
jquery
sorting
html-table
Tony Noriega
la source
la source
Réponses:
Si vous voulez éviter toutes les cloches et les sifflets, puis-je suggérer ce simple
sortElements
plugin . Usage:Et une démo. (cliquez sur les en-têtes de colonne "ville" et "établissement" pour trier)
la source
Error: illegal character
J'obtiens cette erreur le html n'est pas exactement le même, j'ai aussi thead et tboy, pouvez-vous m'aider avec ça s'il vous plaît?$.text([a]) == $.text([b])
utiliser$.text([a]).toUpperCase() == $.text([b]).toUpperCase()
va le réparer.Je suis tombé sur ça, et j'ai pensé que je mettrais mes 2 cents. Cliquez sur les en-têtes de colonne pour trier par ordre croissant, et encore une fois pour trier par ordre décroissant.
** Mise à jour: 2018
la source
td
s, par exemple,<a href="#">Test</a>
le tri concerne le<a...
. Pour trier uniquement par texte, vous devez remplacerhtml()
la dernière ligne partext()
.comparer(..)
si vous saviez exactement quel format vous souhaitez prendre en charge). En attendant, si vous utilisezyyyy-MM-dd
, "string
" le tri ordonnera les données pour vous. par exemple jsbin.com/pugedip/1De loin, le plus simple que j'ai utilisé est: http://datatables.net/
Étonnamment simple ... assurez-vous simplement que si vous utilisez la voie de remplacement DOM (IE, créer une table et laisser DataTables le reformater), assurez-vous de formater votre table avec
<thead>
et<tbody>
ou cela ne fonctionnera pas. C'est à peu près le seul piège.Il y a aussi un support pour AJAX, etc. Comme pour tous les très bons morceaux de code, il est aussi TRÈS facile de tout désactiver. Vous seriez surpris de ce que vous pourriez utiliser, cependant. J'ai commencé avec un DataTable "nu" qui n'a trié qu'un seul champ, puis j'ai réalisé que certaines des fonctionnalités étaient vraiment pertinentes pour ce que je fais. Les clients ADORENT les nouvelles fonctionnalités.
Points bonus vers DataTables pour une prise en charge complète de ThemeRoller ....
J'ai également eu de la chance avec le trieur de tables, mais ce n'est pas aussi facile, pas aussi bien documenté et n'a que des fonctionnalités correctes.
la source
Nous venons de commencer à utiliser cet outil astucieux: https://plugins.jquery.com/tablesorter/
Une vidéo sur son utilisation est disponible sur: http://www.highoncoding.com/Articles/695_Sorting_GridView_Using_JQuery_TableSorter_Plug_in.aspx
Avec une table simple
la source
Ma réponse serait "soyez prudent". De nombreux modules complémentaires de tri de table jQuery trient uniquement ce que vous transmettez au navigateur. Dans de nombreux cas, vous devez garder à l'esprit que les tables sont des ensembles dynamiques de données et peuvent potentiellement contenir des millions de lignes de données.
Vous mentionnez que vous n'avez que 4 colonnes, mais plus important encore, vous ne mentionnez pas le nombre de lignes dont nous parlons ici.
Si vous passez 5000 lignes au navigateur à partir de la base de données, sachant que la table de base de données réelle contient 100000 lignes, ma question est: quel est l'intérêt de rendre la table triable? Afin de faire un tri approprié, vous devez renvoyer la requête à la base de données et laisser la base de données (un outil réellement conçu pour trier les données) faire le tri pour vous.
En réponse directe à votre question, le meilleur module complémentaire de tri que j'ai rencontré est Ingrid. Il y a de nombreuses raisons pour lesquelles je n'aime pas cet add-on ("cloches et sifflets inutiles ..." comme vous l'appelez), mais l'une de ses meilleures fonctionnalités en termes de tri, c'est qu'il utilise ajax, et ne le fait pas. t supposez que vous lui avez déjà transmis toutes les données avant de faire son tri.
Je reconnais que cette réponse est probablement exagérée (et avec plus de 2 ans de retard) pour vos besoins, mais je suis ennuyé lorsque les développeurs de mon domaine négligent ce point. J'espère donc que quelqu'un d'autre le comprendra.
Je me sens mieux maintenant.
la source
C'est une belle façon de trier un tableau:
Le violon peut être trouvé ici:
https://jsfiddle.net/e3s84Luw/
L'explication peut être trouvée ici: https://www.learningjquery.com/2017/03/how-to-sort-html-table-using-jquery-code
la source
J'adore cette réponse acceptée, cependant, vous avez rarement besoin de trier html et de ne pas avoir à ajouter d'icônes indiquant le sens de tri. J'ai pris l'exemple d'utilisation de la réponse d'acceptation et j'ai résolu cela rapidement en ajoutant simplement bootstrap à mon projet et en ajoutant le code suivant:
<div></div>
à l'intérieur de chacun
<th>
afin que vous ayez une place pour définir l'icône.setIcon(this, inverse);
à partir de l'utilisation de la réponse acceptée, sous la ligne:
th.click(function () {
et en ajoutant la méthode setIcon:
Voici une démo . - Vous devez soit exécuter la démo dans Firefox ou IE, soit désactiver la vérification de type MIME de Chrome pour que la démo fonctionne. Cela dépend du plugin sortElements, lié par la réponse acceptée, en tant que ressource externe. Juste un avertissement!
la source
Voici un graphique qui peut être utile pour décider lequel utiliser: http://blog.sematext.com/2011/09/19/top-javascript-dynamic-table-libraries/
la source
La réponse de @Nick Grealy est excellente, mais elle ne prend pas en compte les
rowspan
attributs possibles des cellules d'en-tête du tableau (et probablement les autres réponses ne le font pas non plus). Voici une amélioration de la réponse de @Nick Grealy qui corrige cela. Basé sur cette réponse aussi (merci @Andrew Orlov).J'ai également remplacé la
$.isNumeric
fonction par une fonction personnalisée (merci @zad) pour la faire fonctionner avec les anciennes versions de jQuery.Pour l'activer, ajoutez
class="sortable"
à la<table>
balise.la source
Vous pouvez utiliser un plugin jQuery ( racejs ) qui fournit le tri, le filtre et la pagination:
HTML:
JS:
Exemple de travail sur violon
la source
Celui-ci ne raccroche pas le / les navigateur / s, facilement configurable plus loin:
la source
À la réponse de James, je ne changerai que la fonction de tri pour la rendre plus universelle. De cette façon, il triera le texte par ordre alphabétique et des nombres comme des nombres.
la source
Une autre approche pour trier le tableau HTML. (basé sur le tri HTML W3.JS )
la source
J'ai fini par utiliser la réponse de Nick (la plus populaire mais non acceptée) https://stackoverflow.com/a/19947532/5271220
et l'a combiné avec https://stackoverflow.com/a/16819442/5271220 mais ne voulait pas ajouter d'icônes ou de fontawesome au projet. Les styles CSS pour sort-column-asc / desc J'ai fait la couleur, le remplissage, la bordure arrondie.
Je l'ai également modifié pour passer par classe plutôt que par aucune afin que nous puissions contrôler celles qui sont triables. Cela pourrait également être utile plus tard s'il y a deux tables, bien que d'autres modifications soient nécessaires pour cela.
corps:
... plus bas dans le corps
les fonctions:
la source
Mon vote! jquery.sortElements.js et jquery simple
Très simple, très facile, merci nandhp ...
Dei uma melhorada do código
Une morue de mieux! Fonction pour toutes les tables dans tous Th dans tous les temps ... Regardez-le!
DEMO
la source
.live()
.