Неожиданное возвращаемое значение инициализации при инициализации Datatables внутри объекта

Я помещаю инициализацию функции dataTable внутрь объекта, но не получаю того же результата, что и при инициализации вне объекта.

Инициализация вне объекта

var dataTable = $('datatable').dataTable();

Инициализация внутри объекта

var aObject = {
    dataTable : null,
    initFunction : function() {
        // this.dataTable contents is not the same when I initialize dataTable outside the object
        this.dataTable = $('datatable').dataTable();
    }
}

Почему это?

РЕДАКТИРОВАТЬ: Кроме того, похоже, не удалось успешно инициализировать таблицу в dataTables, когда это делается внутри объекта.


person developarvin    schedule 05.09.2011    source источник
comment
Глядя на исходный код для datatables, функция dataTable() ничего не возвращает, так как же возвращаемые значения отличаются?   -  person WTK    schedule 05.09.2011
comment
При инициализации вне объекта я получаю элемент таблицы, который я инициализировал (в приведенном выше примере элемент данных). Инициализация внутри объекта дает мне большой объект с такими индексами, как контекст, dataTableExt, dataTableSettings, jquery и т. д.   -  person developarvin    schedule 05.09.2011
comment
Какую версию datatable вы используете?   -  person WTK    schedule 05.09.2011


Ответы (1)


Я протестировал его, используя следующий код, и результаты обоих console.log одинаковы. Вы уверены, что используете правильный селектор в обоих местах (внутри и снаружи объекта)?

var aObject = {
    dataTable : null,
    initFunction : function() {
        this.dataTable = $('#data').dataTable();
        }
    }

    $(function() {
        var x = $("#data").dataTable();
        aObject.initFunction();

        console.log(x);
        console.log(aObject.dataTable);
    })

и следующая html-таблица:

<table id="data">
    <thead>
        <tr>
            <th>Name</th>
            <th>Age</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                one
            </td>
            <td>
                22
            </td>
        </tr>
    </tbody>
</table>
person WTK    schedule 05.09.2011
comment
Я использовал jQuery 1.6.2 и таблицы данных 1.8.1. - person WTK; 05.09.2011
comment
Интересно. Я попробовал ваш код, используя собственное имя таблицы, и он работает. Но мой код по-прежнему выводит разные результаты. Правильный имеет индекс 0, который содержит элемент DOM. А у проблемного его нет. - person developarvin; 05.09.2011
comment
Хм, еще раз, вы уверены, что селекторы в вашем коде в порядке? Потому что в своем вопросе вы использовали: $('datatable'), который ничего не выберет, поскольку datatable не является допустимым именем тега. - person WTK; 05.09.2011
comment
Я просто использую «datatable» в качестве примера. Но тем не менее я еще раз взглянул на разметку и понял, что проблема была в имени селектора. - person developarvin; 05.09.2011