本文小编为大家详细介绍“jquery如何监听span元素的改变”,内容详细,步骤清晰,细节处理妥当,希望这篇“jquery如何监听span元素的改变”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
jquery 监听 span 元素改变的方法
我们先来看一下 jquery 的事件监听方法:
.on()。在 jquery 中,我们可以用它来注册事件处理函数。
不过对于 span 元素来说,它并不像 input 元素一样有特殊的
input事件。但是,我们可以通过其它事件来模拟输入事件。
在本文中,我们将利用一个名为 [MutationObserver](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver) 的 DOM 监听器,监听 span 元素的
innerText属性变化事件。
MutationObserver
MutationObserver 是现代浏览器支持的一种新型 DOM 监听器,它可以监听 DOM 中任何节点的变化,并通过回调函数来响应这些变化。
下面列出了 MutationObserver 的典型用法:
// 监听某个元素以及其子元素在 DOM 树中的所有变化 var observer = new MutationObserver(callback); observer.observe(targetElement, config);
其中,
callback是一个回调函数,当目标元素或其子元素发生变化时,该回调函数将被回调。
targetElement是要监听的 DOM 元素,
config参数是一个配置对象,允许我们配置元素发生变化时要监听的属性。
对于本文的示例,我们将监听 span 元素的
innerText属性变化事件:
var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { console.log('innerText changed:', mutationRecord.target.innerText); }); }); observer.observe(document.getElementById('mySpan'), { characterData: true, subtree: true });
其中,
characterData: true可以让我们监听目标元素内容的变化,
subtree: true参数可以让我们监听目标元素所有后代元素的变化。
实现
有了上述基础之后,我们就可以开始实现 jquery 监听 span 元素改变的功能了。
首先,我们要通过 jquery 获取要监听的 span 元素,然后利用原生 DOM 对象创建一个 MutationObserver 实例。
var $span = $('span'); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { console.log('innerText changed:', mutationRecord.target.innerText); }); });
接下来,我们需要将 jquery 对象转换成原生 DOM 对象。
var span = $span[0];
最后,通过
observe()方法,我们将 span 元素添加到 MutationObserver 中:
observer.observe(span, { characterData: true, subtree: true });
这样,当 span 元素的内容发生变化时,我们就可以通过 MutationObserver 监听到变化,并实时获得最新的内容了。