zoukankan      html  css  js  c++  java
  • MutationObserver监听DOM元素结构变化和属性变化实例

    
    
     1 var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;//浏览器兼容
     2 var config = { attributes: true, childList: true}//配置对象
     3 $("要监听的DOM元素").each(function(){
     4    var _this = $(this);
     5    var observer = new MutationObserver(function(mutations) {//构造函数回调
     6       mutations.forEach(function(record) {
     7          if(record.type == "attributes"){//监听属性
     8         //do any code
     9          }
    10          if(record.type == 'childList'){//监听结构发生变化
    11               //do any code
    12          }
    13       });
    14    });
    15    observer.observe(_this[0], config);
    16 });

    配置对象config属性

    • childList:子元素的变动
    • attributes:属性的变动
    • characterData:节点内容或节点文本的变动
    • subtree:所有下属节点(包括子节点和子节点的子节点)的变动
    • attributeFilter: 监听制定属性[attrName]

    注:subtree不可以单独使用,需和其它属性配合;


    停止监听观察
    observer.disconnect();
    

    清除历史监听记录

    observer.takeRecord
    

     

    record返回对象的属性
    • type:观察的变动类型(attribute、characterData或者childList)。
    • target:发生变动的DOM对象。
    • addedNodes:新增的DOM对象。
    • removeNodes:删除的DOM对象。
    • previousSibling:前一个同级的DOM对象,如果没有则返回null。
    • nextSibling:下一个同级的DOM对象,如果没有就返回null。
    • attributeName:发生变动的属性。如果设置了attributeFilter,则只返回预先指定的属性。
    • oldValue:变动前的值。这个属性只对attribute和characterData变动有效,如果发生childList变动,则返回null。
    *********************************** Ahthor: Scot Wang Mail: wxg1837@qq.com QQ: 244821681 ***********************************
  • 相关阅读:
    Android SDK镜像的介绍使用
    如何在使用MAMP环境下安装MySQLdb
    MySQL – 导出数据成csv
    CSV
    自己写的一个Yeoman的Generator-Require-Angularjs
    笔记
    PHP
    Intellij IDEA 14的注册机
    nodejs
    Python
  • 原文地址:https://www.cnblogs.com/scot/p/5994070.html
Copyright © 2011-2022 走看看