刷新jQuery dataTable时的范围问题

时间:2012-12-06 18:38:15

标签: javascript jquery datatables jquery-datatables

我正在尝试让jQuery dataTable工作,以便每次用户对HTML <select>框进行更改时重绘表。这就是我所拥有的:

<script language="javascript" type="text/javascript">
    $(document).ready(function() {
        // Get all widgets and populate the "#widget-sel" select box.
        $.getJSON(
            "/myServer/getAllWidgets",
            function(data) {
                // Define a change handler for an HTML <select>.
                $("#widget-sel").change(onWidgetChange);
            }
        );

        $("#redraw-button").click(function() {
            redrawTable();
        });
    });

    // Declare a reference to the jQuery dataTable
    var $dataTableRef;

    function onWidgetChange() {
        $dataTableRef = $("#widget-datatable").dataTable( {
            // Setup and draw the table.
            // Ommitted for brevity but when I call this from up inside
            // document.ready it works perfectly.
        });
    }

    function redrawTable() {
        alert("dataTableRef is: " + $dataTableRef);
        $dataTableRef.fnDraw();
    }
</script>

<input type="button" value="Redraw Table" id="redraw-button"/>

当我运行此代码时,页面加载时一切正常。但是当我对选择框进行选择更改时,我会在警告框中收到以下消息:

  

dataTableRef是:[object Object]

然后没有任何反应(当$dataTableRef.fnDraw()执行时)。我相信我的问题来自于我在document.ready中定义了一些函数,而其他函数没有定义,因此它可能是范围问题或类似的问题。任何jQuery maestros可以找到我要去的地方吗?

更新

另一位用户指出代码可能正常运行,但该表实际上并没有被更改,因此当我重绘时,我可能没有注意到任何差异。 情况不是这样,因为在页面加载的时间和用户点击刷新按钮之间,他/她可能已经与其他UI元素进行了交互,触发了AJAX调用并更改了{{1支持widgets URL的表。所以是的,桌子绝对可以改变!

0 个答案:

没有答案