2010-12-06 3 views
0

Comment puis-je modifier ce plugin pour masquer le tableau entier (c'est-à-dire l'en-tête) si toutes ses lignes (tbody) sont filtrées? Inversement, quand une ou plusieurs lignes réapparaissent, je veux montrer l'en-tête, etc.jQuery plugin uiTableFilter modification

Merci d'avance.

Jay

+0

pouvez-vous donner le lien pour le plugin que vous utilisez? – kobe

+0

@gov Je pense que c'est celui-ci: http://plugins.jquery.com/project/uiTableFilter – Trufa

+0

C'est vrai, @Trufa. – birdus

Répondre

0

Dans le documentation est dit:

  • ifHidden - rappel à exécuter si un ou plusieurs éléments ont été cachés

Donc, si hou utiliser ce rappel avec .hide() vous pourriez obtenir ce que vous voulez.

Je vous essayez de le faire vous-même, nous pouvons peut-être vous aider avec les détails, mais je ne peux pas faire si vous :)

Bonne chance!

0

Cet extrait de code (provenant de uiTableFilter) recherche dans chaque ligne du tableau s'il peut trouver le texte recherché (j'ai renommé sa méthode avec un nom plus agréable). Si c'est le cas, il appelle l'une des deux méthodes, soit cacher ou afficher cette ligne (matches() ou noMatch()).

elems.each(function() 
{ 
    var elem = $(this); 
    $.uiTableFilter.FoundSearchString(getText(elem), words, false) ? matches(elem) : noMatch(elem); 
} 

J'ai ajouté le code suivant après ce code. Ce code est légèrement plus complexe qu'il ne l'aurait été simplement parce que j'ai plusieurs tables sur mon écran et je les filtre tous simultanément. Mes tables ont la classe "SearchResultsTable". Je saisis simplement toutes mes tables, je les parcourais, obtenant le nombre de lignes visibles dans chacune d'entre elles. S'il n'y a pas de lignes visibles, je cache l'en-tête, sinon, je le montre.

var grids = $(".SearchResultsTable"); 
grids.each(function() 
{ 
    var grid = $(this); 
    var rowCount = grid.find("tbody:first > tr:visible").length; 
    if (rowCount > 0) 
    { 
     grid.find("thead").show(); 
    } 
    else 
    { 
     grid.find("thead").hide(); 
    } 
});