我无法让任何这些事件侦听器触发任何函数。
以下是我的Chrome扩展程序。触发警报但没有一个侦听器工作。元素是动态创建的,所以我不确定这是否有所作为。
document.addEventListener('DOMContentLoaded', function() {
document.querySelector('.overlay_show').addEventListener('click', alertit);
document.querySelector('.overlay_hide').addEventListener('click', alertit);
});
元素html
`<a class='overlay_hide' ><i>Hide<i/></a>`;
`
任何想法都会有所帮助吗?
答案 0 :(得分:1)
元素是动态创建的,所以我不确定这是否会产生影响。
确实如此。如果在之前添加侦听器,则添加元素,它将无法工作。执行document.querySelector('.overlay_show')
时,它会选择具有类.overlay_show
的第一个元素,并在其上添加一个侦听器。的完成
所以,你有2个解决方案:
但这意味着你必须每次这样做
<body>
点击并使用e.target
document.body.addEventListener('click', function (e) {
if (e.target.classList.contains('overlay_show')
|| e.target.classList.contains('overlay_hide')) {
alertit()
}
}