- 动态生成的DOM无法绑定事件
(1)bind事件绑定只对dom中存在的元素有效,对于我们后来动态增加的元素是监测不到,所以绑定不了
(2)同样,当你使用var aa = document.getElementsByTagName("动态生成的元素");来获取动态生成的元素的时候也是获取不到的,因为网页只会执行一次初始化绑定,之后动态生成的dom元素也是监测不到的。
A: 把bind改用delegate,因为delegate是实时监测的。
在jquery1.7 起版本用on替代了bind()、live() 和 delegate() 方法。
delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。
.on()函数的用于为指定元素的一个或多个事件绑定事件处理函数
最主要的是 on()函数执行后新添加,绑定事件对其依然有效
//简单的演示on()
// 为div中的所有p元素绑定click事件处理程序
// 只有n2、n3可以触发该事件
$("div").on("click","p",function(event){
alert( $(this).text());
});
// 后添加的n6也可以触发上述click事件,因为它也是div中的p元素
$("#n1").append('<p id="n6">上述绑定的click事件对此元素也生效!</p>');