Comme l'indique le titre. J'utilise jQuery pour faire la magie. Je l'ai utilisé une extension personnalisée Contains
aux sélecteurs comme suit:Filtrage de la table côté client
jQuery.expr[':'].Contains = function(a, i, m) {
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};
que je trouve sur la interwebs. Ça fonctionne bien. Je l'utilise en conjonction avec les éléments suivants:
$("#txtSurname, #txtForename").keyup(function() {
var forenameVal = $("#txtForename").val();
var surnameVal = $("#txtSurname").val();
$("#tblEmployees tr").show();
if (forenameVal.length > 0) { $("#tblEmployees tr td:nth-child(1):not(:Contains('" + forenameVal + "'))").parent().hide(); }
if (surnameVal.length > 0) { $("#tblEmployees tr td:nth-child(2):not(:Contains('" + surnameVal + "'))").parent().hide(); }
});
Cependant, cela est très inefficace et avec une table de 500 lignes, il se bat énormément. Mes compétences de jQuery uber-ninja ne sont pas aussi bonnes que celles du développeur suivant quand il s'agit d'écrire des sélecteurs efficaces, donc je me demandais s'il y avait une meilleure façon de faire ça?
Encore assez sacrément lent malheureusement, bien que la suggestion ait un sens. – Kezzer
avez-vous essayé de sortir le sélecteur ": not (: Contient) juste pour voir si c'est là que se trouve le goulot d'étranglement? –