需求
HTML代码如下,其中的span标签会动态添加,在其上需要监听【 点击事件 】
<div id="parent">
<span>11111</span>
</div>
一般都是考虑使用 on 来绑定监听事件到 span 上,如:
$('div#parent span').on('click', function(){...});
问题:
以上代码是直接把事件绑定到了 span上,后面动态添加的 span是不会绑定上事件的
解决:
$('div#parent').on('click','span', function (){...});
解析:
on方法可以接受三个参数:事件名、触发选择器、事件函数
特别注意的是:on方法第二个参数触发选择器就是你将要添加的HTML元素的类名、id或者元素名,使用它就可以实现live的效果
这个触发选择器实际上就是在 JQ内部判断了一次事件参数的$(e.target).is(selector),只有触发对象匹配触发选择器才会触发。这是利用了事件冒泡的机制来完成 的