Несколько таблиц данных на разных вкладках, одна с источником Ajax - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть 2 таблицы под 2 вкладками.Таблица под вкладкой по умолчанию показывает точные данные.Вторая таблица заполняется из источника Ajax (массив JSON).Проблема в том, что я не могу инициализировать эту таблицу с помощью DataTables.

$(document).ready(function() {

    //When page loads...
    $(".tab_content").hide(); //Hide all content
    $("ul.tabs li:first").addClass("active").show(); //Activate first tab
    $(".tab_content:first").show(); //Show first tab content

    //On Click Event
    $("ul.tabs li").click(function() {

        $("ul.tabs li").removeClass("active"); //Remove any "active" class
        $(this).addClass("active"); //Add "active" class to selected tab
        $(".tab_content").hide(); //Hide all tab content

        var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content
        if(activeTab == "#tab2"){   
        $.getJSON("<url>",              
            function(data) {
                    htmlTable = '<table id="table2" cellspacing="1" cellpadding="1" border="1">'; 
                                    htmlTable+=<data...>;
                    htmlTable +='</tbody></table>';
                        $('#table2').remove();
                        $('#tab2').append(htmlTable);
            });

        }

               $(activeTab).fadeIn(); //Fade in the active ID content
        return false;
    });

});

Если я явно инициализирую в функции успеха вызова getJSON (), я вижу несколько таких DataTables при каждом нажатии вкладки.Как инициализировать эту таблицу данных ...

1 Ответ

2 голосов
/ 28 апреля 2011

У меня есть несколько вопросов. Почему вы используете $,getJSON(), когда d ataTables имеет встроенную функциональность для этого?Почему вы создаете таблицу динамически onclick вкладки? ЕСЛИ вы хотите загружать содержимое таблицы только при нажатии второй вкладки, затем создать статическую таблицу и поместить код инициализации dataTables в код вкладки onclick tab2

HTML

<div id="tab2" class="tab_content">
  <table class="display dataTable" id="table2">
    <thead>
      <tr>col1</tr>
       ....
    </thead> 
    <tbody>
    </tbody>
  </table>
</div>

jQuery

$("ul.tabs li").click(function() {

        $("ul.tabs li").removeClass("active"); //Remove any "active" class
        $(this).addClass("active"); //Add "active" class to selected tab
        $(".tab_content").hide(); //Hide all tab content

        var activeTab = $(this).find("a").attr("href"); 
        if(activeTab == "#tab2"){          
           oTable2 = $('#table2').dataTable({
            "bProcessing": true,
                "sAjaxSource": "yourURL"
        }
        $(activeTab).fadeIn(); //Fade in the active ID content
        return false;
    });

Я все еще думаю, что вам следует загружать вторую таблицу при загрузке страницы, а не по нажатию второй вкладкиесли размер контента не слишком велик

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