我正在尝试让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的表。所以是的,桌子绝对可以改变!