监听元素变化的三种方法:
- 对于表单类型的控件,使用onchange事件最好。
- 使用DOMNodeInserted和DOMNodeRemoved事件
- 使用定时器定时检测(下策)
有时需要给一个class类型的对象绑定某个事件,对于以后新插入的class类型的元素也要绑定这样的事件。jQuery中很好的实现了这一功能。实际上,只需要DOMNodeInserted和DOMNodeRemoved两个事件就可以监听元素增删,从而可以在增删元素之前,为元素绑定事件。
DOMNodeInserted和DOMNodeRemoved两个事件所对应的方法是浏览器自动执行的,执行时机为真正增删元素之前。
其它的DOM mutation事件:
- DOMAttrModified
- DOMAttributeNameChanged
- DOMCharacterDataModified
- DOMElementNameChanged
- DOMNodeInserted
- DOMNodeInsertedIntoDocument
- DOMNodeRemoved
- DOMNodeRemovedFromDocument
- DOMSubtreeModified
详情参考MDN
通过以下demo,操作并查看日志可以更好的理解这两个事件。
demo解释:有三个按钮,第一个按钮