我无法在一个简单的jquery对话框中使用数据表(http://datatables.net/)。当我单击按钮打开该框时,您可以看到数据表大约一秒钟,然后立即关闭。任何想法都会非常感激。
我启动对话框的功能如下所示。在其中,数据表被初始化。
function launchLocDialog(mydiv) {
alert(mydiv);
var oTable;
var giRedraw = false;
$(document).ready(function() {
$("#table_id tbody").click(function(event) {
$(oTable.fnSettings().aoData).each(function (){
$(this.nTr).removeClass('row_selected');
});
$(event.target.parentNode).addClass('row_selected');
});
oTable = $('#table_id').dataTable( {
"aaData": [ /* Reduced data set */
[ "1", "02/22/12"],
[ "2", "02/22/12"],
[ "3", "02/22/12"],
[ "4", "02/22/12"],
[ "5", "02/22/12"],
[ "6", "02/22/12"],
[ "7", "02/22/12"],
[ "8", "02/22/12"],
[ "9", "02/22/12"],
[ "10", "02/22/12"],
[ "11", "02/22/12"],
[ "12", "02/22/12"],
],
"aoColumns": [
{ "sTitle": "Number" },
{ "sTitle": "Date Start" }
]
});
oTable.$('td').click( function () {
//var anSelected = fnGetSelected(oTable);
var sData = oTable.fnGetData(0,0);
//alert( 'The cell clicked on had the value of '+sData );
alert(sData);
//$.post('intsum.php', {intsumID: sData});
// window.location = "intsum.php";
});
});
$( "#dialog:ui-dialog" ).dialog( "destroy" );
$( "#dialog" ).dialog({
modal: true,
buttons: {
Ok: function() {
$( this ).dialog( "close" );
}
}
});
}
答案 0 :(得分:1)
只是考虑为此设置一些测试,但是在我的头脑中......你在命名函数中有一个文档就绪函数。我无法测试其中的全部含义,但通常不是完成的事情。
使用document ready来触发需要等待DOM可编写脚本的函数正是设置oTable所需要的;但是,我认为将它嵌套在一个被调用的命名函数中(在某些时候......代码的那部分代码在样本中是不可见的)似乎会产生意想不到的后果。
<强>更新强>
代码中有一些怪癖,我试图理顺一些(这里和那里有一些额外的括号,错误的逗号,但大多数可能是由于试图提供一个简短的例子),但大多数情况下它降临了时间安排。
如上所述,代码时间或多或少,表格不会出现。当然,你必须调用“launchLocDialog()”甚至有希望,但我不认为那是它(可能只是从样本中遗漏)。在任何情况下,删除包装函数并将所有内容放入window.onLoad或文档就绪函数中,表本身似乎有效:
http://live.datatables.net/exinum/4/edit#preview
您没有在代码中看到文档就绪函数,因为JSBin在window onLoad上运行其代码,因此它是多余的。在您的代码中,您将使用其中一个。
所以,问题变成了:
预期的行为是什么?表格是否出现在对话框中?事件绑定到哪里弹出对话框?在原始的launchLocDialog函数中,您似乎能够传递“myDiv”,但我不确定它的作用是什么,因为它以后没有引用。