JQuery DataTables – fnDrawCallback递归问题

所以在我的数据表中,我有一些按钮允许编辑记录。 我正在使用JQuery来设置样式并为按钮单击提供function。 将JQuery应用于按钮的唯一方法是将代码放在表的fnDrawCallback选项中。 但是,它会导致多个函数实例! 例如,只是为了测试我正在创建一个警报,以便在单击按钮时向我提供按钮ID(即记录ID)。 而不只是提醒我一下,它给了我几个警报!

有任何想法吗?

*作为旁注,我尝试在fnInitComplete选项中声明函数,但只将函数应用于显示的第一组记录(即10)。 一旦我显示更多记录或转到下一页,这些function就不会对这些记录起作用。

var tfTable = $('.mypbhs_truforms').dataTable({ "bProcessing": true, "sAjaxSource": 'sql/mypbhs_truforms.php?accountid=', "aaSorting": [[ 1, "asc" ]], "bJQueryUI": true, "sPaginationType": "full_numbers", //"bStateSave": true, //Use a cookie to save current display of items "aoColumns": [ {"asSorting": [ ], "sClass":"center"}, null, null, null, null, null, {"asSorting": [ ], "sClass":"center"}, ], "fnDrawCallback": function(){ //EDIT OFFICE FORM $('.mypbhs_edit_truform_button').click(function(){ var tf_id = $(this).attr('id'); alert(tf_id); }); }, "bScrollCollapse": true, "sScrollX": "100%", "fnInitComplete": function() { tfTable.fnAdjustColumnSizing(); } }); 

好的,找到了解决这个问题的方法。 使用JQuery的.on函数来处理我在fnDrawCallback选项中放置的所有函数。 我很好奇为什么使用fnDrawCallback创建相同function的多个实例,尽管有人有答案。

.mypbhs_edit_truform_button住哪儿? 如果它在原始表本身之外,则每次重绘表时它将再次绑定。 由于.on()有效,它可能是委托模式(因为它只能是.on()的直接翻译)。这意味着它确实存在于原始表本身之外,因此存在多个绑定。

如果你想以原始方式(虽然我认为.on()更好),有没有理由不把它放在InitComplete回调中?