素材牛VIP会员
jquery的事件委托
 Su***er  分类:JavaScript  人气:797  回帖:3  发布于6年前 收藏

我的button是动添加的,点击第一个的时候会应影响第二个,改成下边的body委托才可以用,这是什么原理呢,求解

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv1 新人
编***魔 职业无 6年前#1

对于jQuery1.7版本之前,动态添加的元素绑定事件可以用 live,之后版本,使用 on来绑定,直接给button绑定click事件是不起作用的。

还可以使用addEventListener()来实现事件委托,达到对动态创建的元素绑定事件的效果

Lv4 码徒
大***咒 JAVA开发工程师 6年前#2

事件发生时是会发生以上的步骤/

而事件委托是 委托给他的父级来触发来达到的效果/
!!如果好多个动态元素都用同一个父元素来做事件代理,那么后面的事件会覆盖掉前面父元素代理的事件。

Lv5 码农
sh***ao 职业无 6年前#3

只有第一个和最后一个有用, 中间那个其实并没有什么用.
on来添加事件就是事件委托, 意思就是 :

点击事件绑定在body 和 delete-monitor1上, 等你点击的时候去判断你点击的元素 id === button 的话, 就执行下面的函数. 所以delete-monitor1是不能动态加载的, 但是他的子元素可以, 而body肯定是在的. 所以能成功.

但是中间那种, 我一进页面, 先去找 delete-monitor的子元素 button, 给每个button绑定事件. 但是你的 button是动态加载的,刚进页面的时候是不存在的, 所以没有绑定成功.

我猜你的 delete-monitor buttondelete-monitor1 的子元素, 所以第一个事件绑定影响到了第二个.

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取