jquery监听div等元素的内容变化

方法一:change事件

change事件,在元素的值发生改变时触发,适用于文本域、textarea、select 。 或调用change()方法时可以监听。所以,我们可以模拟change为非表单元素监听change()事件。

change事件
	</div>
	<button type="button" id="btn">add "aaa" for div</button>


	<script src="jquery-1.11.3.js"></script>
	<script>

		function changes(){
			alert("changes");
		}

		$("#btn").click(function() {
			$("#container").append("aaa").change();
		});
		$("#container").bind("change", changes);
	</script>
</body>

以上demo中,点击按钮,为div中动态添加内容,添加内容后,手动调用change()方法,为div模拟出change事件。
注: 1.以上demo中是追加的内容,所以没有判断div的内容是否发生变化,如果在其他场景下,可以自己判断div内容是否发生了变化

2 .只要兼容jquery的浏览器都可以兼容此方法。

方法二:DOMNodeInserted事件

经测试,这个DOMNodeInserted事件可以监听到非表单元素的内容的变化,只有在插入节点时有效,相反DOMNodeRemoved事件,只有在移除节点时有效。DOMNodeInserted事件是js提供的一个dom2级事件(具体什么意思,我还没有弄懂,弄懂后回来补充,此处省略1000字。。。),总之,是可以监听到的。

change事件
	</div>
	<button type="button" id="btn">add "aaa" for div</button>


	<script src="jquery-1.11.3.js"></script>
	<script>

		function changes(){
			alert("changes");
		}

		$("#btn").click(function() {
			$("#container").append("aaa");
		});
		$("#container").bind("DOMNodeInserted", changes);
	</script>
</body>
注: 此方法存在ie8及以下浏览器中失效

方法三:定时任务

可以通过定时任务来监听非表单元素的内容变化,如果以上两种方法均不适用的情况下,可以尝试此种方法

change事件
	</div>
	<button type="button" id="btn">add "aaa" for div</button>


	<script src="jquery-1.11.3.js"></script>
	<script>

		function changes(){
			alert("changes");
		}

		$("#btn").click(function() {
			$("#container").append("aaa");
		});

		var div = $("#container").html();
		setInterval(function() {
			var divNew = $("#container").html();
			if(div != divNew) {
				changes();
				div = divNew;
			}
		}, 100);
	</script>
</body>

作者:云_飞扬
来源:CSDN
原文:https://blog.csdn.net/qq_38627581/article/details/79467298
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值