在有些情况下,需要在DOM节点存在之前就给这个节点绑定事件,在使用Jquery给尚不存在的dom节点绑定事件时发现并不起作用,事件并没有绑定在dom节点上,但也不报错。而使用原生的JavaScript绑定事件,如果绑定事件的DOM节点不存在,是会报错的。
原生JS绑定事件
|
|
先给id为J_jump的dom节点绑定事件,然后再生成此节点,刷新页面就会报错,动态产生的跳转按钮也不会出现在页面上。
|
|
JQuery绑定事件
而使用Jquery在未生成的节点上绑定事件,跳转按钮是会正常展示的,但是点击没有反应。
原生JS事件委托
可以通过事件代理解决这个问题,在使用原生的javascript绑定事件时,可以将事件绑定在确定会存在的祖先节点上,委托祖先节点处理事件.
输出:
JQuery事件委托
在Jquery中还是可以用on方法实现事件代理。
所以,动态生成的节点上绑定事件无效,其实是如果事件在dom节点不存在时绑定,才会无效,对于动态生成的节点如果事件是在节点存在之后绑定的,是没有问题的。