Geo*_*kov 1 javascript jquery dom jstree
每当满足某个选择器的div插入DOM时,我想要执行某个回调.我已经开始讨论DOM事件文档,而我发现的最接近的事件就是"加载",但它并不像我希望的那样完成.
理想情况下,我想要的是:
$(".myclass").live("load", function(){... do stuff to $(this) ...}
Run Code Online (Sandbox Code Playgroud)
给出我正在做的事情的一些背景:
我在网页上有一个事件,每次点击某个按钮时都会创建新的表单.修改JS代码是非常不受欢迎的.我想将表单中的一个字段转换为jstree,因此我能想到的唯一方法是为插入到DOM事件附加一个回调并在func中附加一个jstree.
更新:我发现DOMNodeInserted,但显然它在IE中不受支持.
大规模警告: 不推荐使用DOM级别3中定义的DOMMutationEvents.
document.addEventListener("DOMNodeInserted", function (ev) {
var node = ev.target;
if (careAbout(node)) {
runCode(ev);
}
});
Run Code Online (Sandbox Code Playgroud)
该DOMNodeInserted事件记录在DOM事件级别2中.
当然浏览器支持是平庸的.
在不兼容的浏览器中模拟这种情况的唯一方法是轮询整个DOM以确定树是否已更改并手动触发事件.这也像地狱一样昂贵.
但你真正的问题是:
修改JS代码是非常不受欢迎的
你有糟糕,丑陋,不可维护的代码.忽略它不会解决问题.踩着它不会让它消失.最好的办法是重构,重构,重构.