2

我想知道您是否可以听到 a 的元素何时UListElement更改(即LIElement添加或删除)?

UListElement toDoList = query('#to-do-list');
LIElement newToDo = new LIElement();
newToDo.text = "New Task";
toDoList.elements.add(newToDo);
// how do I execute some code once the newToDo has been added to the toDoList?

我假设elements.add()是异步的,因为我来自 ActionScript 背景。这是一个有效的假设吗?

4

3 回答 3

3

更高级别的框架为此提供了事件,但在 HTML5 API 级别,您必须使用 MutationObserver。

这是一个可以在任何 DOM Element 对象上设置突变观察者的示例。然后,处理程序可以根据需要处理突变事件。

void setMutationObserver(Element element){
  new MutationObserver(mutationHandler)
    .observe(element, subtree: true, childList: true, attributes: false);
}

void mutationHandler(List<MutationRecord> mutations,
                    MutationObserver observer){
  for (final MutationRecord r in mutations){
    r.addedNodes.forEach((node){
      // do stuff here
    });

    r.removedNodes.forEach((node){
      // or here
    });
  }
}
于 2012-11-20T16:54:04.140 回答
0

element.elements.add(otherElement)是同步的,相当于element.appendChild(otherElement)Javascript(即DOM Level 2 Core : appendChild)。

于 2012-11-20T13:53:58.360 回答
0

您可能还对我们与 MDV 的合作感兴趣:

于 2012-11-21T02:54:38.883 回答