用于节点创建的DOM回调

时间:2011-11-03 01:42:24

标签: javascript jquery dom jstree

每次将满足某个选择器的div插入DOM时,我都希望执行某个回调。我已经开始讨论DOM事件文档了,我发现的最接近的事件就是“加载”,但它并不像我希望的那样工作。

理想情况下,我想要的是:

$(".myclass").live("load", function(){... do stuff to $(this) ...}

为我正在做的事情提供一些背景信息:

我在网页上有一个事件,每次点击某个按钮时都会创建新的表单。修改JS代码是非常不受欢迎的。我想将表单中的一个字段转换为jstree,因此我能想到的唯一方法是为插入到DOM事件附加一个回调并在func中附加一个jstree。


更新:我发现了DOMNodeInserted,但显然它在IE中不受支持。

1 个答案:

答案 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代码是非常不受欢迎的

你有糟糕,丑陋,无法维护的代码。忽略它不会解决问题。踩着它不会让它消失。最好的办法是重构,重构,重构。