我现在写的页面会动态加载一些元素,而这些元素都需要添加点击事件,但是如果每次新元素加载完我用类过滤器给这些元素添加点击事件,那么已经加载的元素又加了一次点击事件.
很简单啊,事件代理。这种方式是最优雅的。楼上有 hack 成分。
用楼上方式,你需要为页面上已存在元素的事件和动态添加元素的事件分别绑定一次。
而事件代理,只须一次。并且代码简洁。
$('body').on('click', 'button', function(){
//....
})
这种把子元素(button)代理到父元素(body)的方式,可满足动态元素. 如上,动态添加的 button 也是有事件的。
因为事件是作用在 body 上的,只要你body元素不是动态的,其子元素再怎么动态都是可以绑定的。
当然,上面的 body 可以是任意你要动态添加的元素的父元素,但是这个父元素不能是动态添加的。
手机码字不宜。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。