jQuery中事件绑定,大多使用on就足够了。
但是对于新添加的元素 on 的绑定事件 会不起作用。
因为 append 中的 节点是在整个文档加载之后才添加的,页面并不会为未来的元素初始化添加点击事件,因此 这种方式添加的 节点的点击事件是无效的。
解决方法:
事件委托。事件委托就是利用事件冒泡的原理,把事件添加到父元素或祖先元素上,触发执行效果。
原代码:
1 $('#ul li').on('click', function() {2 alert($(this).html())3 })
修改为:
$(document).on('click', '#ul li', function() { alert($(this).html())})