jQuery不匹配表值

时间:2014-02-26 11:08:31

标签: jquery jquery-datatables

当我在Modal弹出窗口中打开jQuery数据表时,以下代码返回null。

     /**
     * Return the settings object for a particular table
     *  @param {node} nTable table we are using as a dataTable
     *  @returns {object} Settings object - or null if not found
     *  @memberof DataTable#oApi
     */
    function _fnSettingsFromNode ( nTable )
    {
        for ( var i=0 ; i<DataTable.settings.length ; i++ )
        {
            if ( DataTable.settings[i].nTable === nTable )
            {
                return DataTable.settings[i];
            }
        }

        return null;
    }

此代码来自jQuery库。 我想知道它会在哪些情况下返回null

在一般页面中它工作正常。 在模态弹出窗口中,如果你第二次打开模态弹出窗口,那么它总是返回null。 DataTable.settings[i].nTable === nTable此条件不匹配事件,因为它在两端都有相同的表。

请帮帮我。

2 个答案:

答案 0 :(得分:0)

每次打开模态弹出窗口时,是否重新创建表格? (这是一个jQuery对话框吗?)如果是这样的话,你可能需要首先使用旧的fnDestroy()。

你是在破坏弹出窗口,每次都重新创建它,还是只是隐藏/关闭它?如果要破坏它,请确保先正确处理表格 - 也许将其销毁,或者将其移动到DOM中的其他地方,以便下次需要时可以将其取回。

答案 1 :(得分:0)

使用此方法而不是旧方法。

    // This function sets up click handler for the rows of the
    // data table.
    function _fnSetupMyRowClicks() {
        //Handle the clicks for the rows in the employee table. Note that the
        //.live() is deprecated in 1.7 and the.on() and .off() functions need
        //to be uese.
        //oTable.find('tbody').find('tr').live('click', function (event) {

        //unbind any previously bound click event on the row - just in
          //case the table has gone stale or whatever. Refer to the URL
            //http://www.datatables.net/forums/discussion/comment/43117
            $(document).off('click', 'tbody > tr');

            //And freshly bind the click event, note the use of .on(). The
            //suggested method by Datatables is .live(), but this is deprecated
            //in jQuery 1.7
            $(document).on('click', 'tbody > tr', function () {
                //remove the selection of the currently selected row

                oTable.$('tr.row_selected').removeClass('row_selected');

                //add selection to the row that was clicked
                $(this).addClass('row_selected');

                if (properties.fnRowSelected != null) {
                    properties.fnRowSelected();
                }
            });
        //});
    }