我会在纯 Javascript 中模拟 jQuery.on( events , selector , data)
方法的主要功能。
例如
$(document).on('click','.button',function() {
console.log("jquery onclick");
});
我认为制作这样的东西就足够了
document.addEventListener('click',function(e) {
if(e.target.className == 'button2') {
console.log("It works");
}
});
但是,当我有这个 html 结构时:
<button class="button2">Hello <span>World</span></button>
span
当元素e.target
上触发 click 事件时,我的脚本不起作用,因为span
. (对于这个问题,我忽略了具有多个类的元素的复杂性以及跨浏览器兼容性)
jQuery的源代码读起来并不简单,我也不明白它是如何工作的(因为 jQuery 中的第一段代码适用于我的 html 结构)。
我需要这个方法,因为我的 html 是动态的,并且这个类的按钮被创建、删除和重新创建了很多次。我不想每次都添加听众。
如果可能的话,我会避免包含 jquery 库。
那么,我能做到吗?
这里是用于测试的jsFiddle。