每次将满足某个选择器的div插入DOM时,我都希望执行某个回调。我已经开始讨论DOM事件文档了,我发现的最接近的事件就是“加载”,但它并不像我希望的那样工作。
理想情况下,我想要的是:
$(".myclass").live("load", function(){... do stuff to $(this) ...}
为我正在做的事情提供一些背景信息:
我在网页上有一个事件,每次点击某个按钮时都会创建新的表单。修改JS代码是非常不受欢迎的。我想将表单中的一个字段转换为jstree,因此我能想到的唯一方法是为插入到DOM事件附加一个回调并在func中附加一个jstree。
更新:我发现了DOMNodeInserted,但显然它在IE中不受支持。
答案 0 :(得分:5)
批量警告: DOMMutationEvents已在DOM级别3中定义。
document.addEventListener("DOMNodeInserted", function (ev) {
var node = ev.target;
if (careAbout(node)) {
runCode(ev);
}
});
DOM events level 2中记录了DOMNodeInserted
事件。
当然浏览器支持是平庸的。
在不兼容的浏览器中模拟此操作的唯一方法是轮询整个DOM以确定树是否已更改并手动触发事件。这也被称为昂贵的地狱。
但你真正的问题是:
修改JS代码是非常不受欢迎的
你有糟糕,丑陋,无法维护的代码。忽略它不会解决问题。踩着它不会让它消失。最好的办法是重构,重构,重构。