Div странно показано вверху с Tablesorter - PullRequest
0 голосов
/ 09 мая 2011

Я использую http://tablesorter.com/docs/, чтобы попытаться отсортировать таблицу.Это работает с косметической проблемой, которая не так сильно беспокоит.«Зебра» не активируется, пока вы действительно не попытаетесь заказать стол.Совсем не раздражает, но я не могу понять, почему это происходит.

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

(".tab_content").hide();
                            $("ul.tabs li:first").addClass("active").show();
                            $(".tab_content:first").show();

                            $("#calls").tablesorter({widthFixed: true, widgets: ['zebra']}).tablesorterPager({container: $("#pager")}); 

Div "пейджер" находится внутри вкладки, чуть ниже целевой таблицы.

Как @mu, чтобы стрелятьуказанный пейджер должен знать, где находится таблица.

Вкладки загружаются с

<ul class="tabs">
    <li><a href="#cont-standard-report">Standard</a></li>
    <li><a href="#cont-extensions-report">Extensions</a></li>
    <li><a id="calls" href="#cont-calling-report">Callings</a></li>
</ul>

Итак, я пробовал использовать предложенную функцию, но она даже не вызывает ее при нажатии на вкладку.

$("#cont-calling-report").one('click', function() {
    alert ("Test");
    $("#calls").tablesorter({widthFixed: true, widgets: ['zebra']})
               .tablesorterPager({container: $("#pager")});
});

Вот что происходит.Щелчок не требуется.

http://imgur.com/CJnYX

Решил с этим

Решил с помощью этого:

if (activeTab == '#cont-callings-report' && !tablesorter){
                                    $("#calls").tablesorter({widthFixed: true, widgets: ['zebra']}).tablesorterPager({container: $("#pager")});
                                    tablesorter = 1;
                                }

Внутри функции вкладки.

1 Ответ

2 голосов
/ 09 мая 2011

Плагину пейджера, вероятно, нужно знать, где находится стол и насколько он велик, прежде чем он сможет правильно позиционировать себя.Когда ваша вкладка скрыта, таблица внутри нее не имеет полезной позиции, поэтому пейджер, вероятно, заканчивается нулями для позиции, в которой она нуждается, и в результате получается пейджер в верхней части страницы.Самым простым решением было бы связать tablesorter при нажатии на вкладку:

$(selector_for_the_tab_with_the_table).one('click', function() {
    $("#calls")
        .tablesorter({widthFixed: true, widgets: ['zebra']})
        .tablesorterPager({container: $("#pager")});
});

Вам нужно связать его только один раз, поэтому используйте .one:

Этот метод идентичен .bind(), за исключением того, что обработчик не связан после своего первого вызова.

...