如何在元素上添加侦听器以在元素发生任何更新时触发事件?

时间:2016-02-01 00:06:04

标签: javascript jquery html

例如,假设我有这个div标签

<div class="x"></div>

所以,如果类值变为“x y”或“y”,如何在此div上添加一个侦听器来触发事件,我可以使用jquery吗?

我想要的是检查这个元素是否有新的更新,这个更新可能会发生而不会触发任何事件,如(点击或鼠标悬停,......),它可以定期更改,比如得到一个来自服务器端的新更新,例如添加新类或向此div添加新内容,以便我可以添加一个侦听器来检查是否可以对此元素进行任何更新

1 个答案:

答案 0 :(得分:1)

您正在寻找的是MutationObserver在此处阅读 - https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

根据您的浏览器支持要求,您可能需要使用框架。签出codepen:

http://codepen.io/anon/pen/NxzJWY(代码直接来自MDN参考)

代码转储:

// select the target node
var target = document.querySelector('#element');

// create an observer instance
var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    document.write(mutation.type);
    document.write('<br />');
    console.log(mutation);
  });    
});

// configuration of the observer:
var config = { attributes: true, childList: false, characterData: false };

// pass in the target node, as well as the observer options
observer.observe(target, config);

target.className = 'test'; // change this class and watch the output from the observe callback above

注意:回调会返回对每个&#34;变种的引用&#34;并且每个突变都返回对有关突变的一大堆数据的引用。检查浏览器控制台以检查变异对象。