随着DOM结构的复杂化和Ajax等动态脚本技术的运用,有了较多的动态添加进来的元素,直接用JQ添加click事件会发现新添加进来的元素并不能直接选取到,在这里就需要用到事件委托方法,JQ为事件委托提供了live().dalegate()和on()方法. 事件委托 我们知道,DOM在为页面中的每个元素分派事件时,相应的元素一般都在事件冒泡阶段处理事件.在类似 body > div > a 这样的结构中,如果单击a元素,click事件会从a一直冒泡到div和body(即document对象).因此
平时工作中会遇到动态给某个div加子元素,有时候为了简便,直接如下写法: var oBox = document.getElementById('box'); oBox .innerHTML = '<button onclick="change();">子元素</button>'; 还顺便给子元素添加了一个点击事件,但发现当我们再外面定义了change函数之后,点击按钮报错,change is not defined!可想而知,这种动态添加子元素的方法是无法添加