Модификация jQuery плагина uiTableFilter - PullRequest
0 голосов
/ 06 декабря 2010

Как я могу изменить этот плагин, чтобы скрыть всю таблицу (т. Е. Заголовок), если все его строки (tbody) отфильтрованы?И наоборот, когда одна или несколько строк снова появляются, я хочу показать заголовок и т. Д.

Заранее спасибо.

Jay

Ответы [ 2 ]

0 голосов
/ 06 декабря 2010

Этот фрагмент кода (из uiTableFilter) просматривает каждую строку таблицы, чтобы увидеть, может ли он найти искомый текст (я переименовал его метод с более подходящим именем). Если это так, он вызывает один из двух методов, чтобы скрыть или показать эту строку (match () или noMatch ()).

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

Я добавил следующий код после этого кода. Этот код немного сложнее, чем мог бы быть, просто потому что у меня на экране несколько таблиц, и я фильтрую их все одновременно. Мои таблицы имеют класс «SearchResultsTable». Я просто беру все свои таблицы, перебираю их, получая количество видимых строк в каждой. Если видимых строк нет, я скрываю заголовок, в противном случае я показываю его.

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();
    }
});
0 голосов
/ 06 декабря 2010

В документации написано:

  • ifHidden - обратный вызов для выполнения, если один или несколько элементов были скрыты

Так что, если вы используете этот обратный вызов с .hide () , вы можете получить то, что хотите.

Если вы попытаетесь сделать это самостоятельно, может быть, мы сможем помочь вам со спецификой, но я не смогу, если для вас:)

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...