ajax异步动态增加dom元素,为其绑定事件的问题(已解决)

使用ajax异步请求,动态增加dom元素,然后为元素绑定事件失败的小问题


一、背景

采用layui的流加载后,动态添加dom元素,添加元素后,打算为其中的某个元素绑定click事件,一开始采用了普通的click事件进行处理,发现找不到该dom元素,难道是元素在绑定事件前还没有加载?


二、原因分析

原因正和我猜的一样,在绑定事件的时候,找不到dom元素,因为它是后添加上去的。因此$(dom).click(function(){})就找不到对应的dom元素,在网上找了一阵子,发现了两个函数可以解决。


三、解决方案

1.live()函数,不过比较过时了,这里就不说了。

2.on()函数。

on函数的介绍

举个例子:

1
2
3
4
$(".order-list-all").on('click','.delete_order',function () {
let othis = $(this);
delete_order(othis);
});

说明:

.order-list-all是本来就存在window对象中的dom元素,而.delete_order是我动态添加的一个dom元素。这样就可以为当前或者未来的元素绑定事件啦。而不应该用$(".order-list-all").click(function(){})

注:

这个函数主要用于ajax异步加载和js动态添加dom中。