Javascript 在div上设置onchange事件处理程序以运行更改尚未存在的表的函数

Javascript 在div上设置onchange事件处理程序以运行更改尚未存在的表的函数,javascript,jquery,html,event-handling,datatables,Javascript,Jquery,Html,Event Handling,Datatables,我有一个由第三方软件生成的网页。我对生成的内容几乎没有控制权,但我可以在这个网页中插入一些javascript。在这个网页上有一个按钮,点击一段时间后(数据是从这个第三方软件动态请求的,这个时间根据请求而变化很大),并生成一个表。这个表是在一个DIV中生成的,我知道这个ID,它以前是空的。然后可以使用其他控件(排序、过滤、每页显示的元素数量等)操纵此表。它是一个DataTables(DataTables.net)对象。我编写了一个函数,通过ID查找这个动态创建的表,并更改其内容的一些格式 现在的

我有一个由第三方软件生成的网页。我对生成的内容几乎没有控制权,但我可以在这个网页中插入一些javascript。在这个网页上有一个按钮,点击一段时间后(数据是从这个第三方软件动态请求的,这个时间根据请求而变化很大),并生成一个表。这个表是在一个DIV中生成的,我知道这个ID,它以前是空的。然后可以使用其他控件(排序、过滤、每页显示的元素数量等)操纵此表。它是一个DataTables(DataTables.net)对象。我编写了一个函数,通过ID查找这个动态创建的表,并更改其内容的一些格式

现在的问题是如何设置一个事件处理程序,以便在生成此表或更改其内容时运行此函数。当页面第一次加载时,DIV为空,并且DOM中没有具有此类ID的表。另一个问题是,我不知道所有这些过滤等是如何工作的。因此,每次在表中更改某些内容时,我都需要在所有更改完成后运行我的函数(所有其他函数都完成了工作)

谢谢

您可以使用该事件

$(文档).ready(函数(){
$(“body”)。在(“domsubertreemodified”,function()上{
if($(“#dynamicallyCreatedTableID”).length>0){
//在此处添加#dynamicallyCreatedTableID的事件处理程序
}
});
});
注意
$(document).ready()
-事件中的封装,这确保事件仅在单击按钮并更新DOM时触发,而不是在最初构建DOM时触发

是的-我知道
不受欢迎,尽管它在我测试的浏览器中仍然有效

相反,您可以通过使用来实现相同的目标。下面是一个修改后的示例:

$(文档).ready(函数(){
var MutationObserver=window.MutationObserver | | window.webkit MutationObserver | | window.MozMutationObserver;
var body=document.querySelector('body');
var observer=新的突变观察者(函数(突变){
突变。forEach(功能(突变){
if($(“#dynamicallyCreatedTableID”).length>0){
//在此处添加#dynamicallyCreatedTableID的事件处理程序
}
});
});
观察者,观察者{
属性:false,
儿童名单:是的,
characterData:false
});
});
上述操作与第一个
domsubtreemedited
示例完全相同