我试图将jQuery事件处理程序转换为纯javascript。页面上有一些特定的选择器,因此设计时只有一个具有该选择器的事件定位文档:
selector
其中.one, .two, .three
是一个选择器列表,作为字符串" document.addEventListener("click", function(event){
if (elementHasClass(event.target, selectorString) {
// do stuff
}
});
"。
我在没有jQuery的情况下努力复制这个:
document
但是这并没有所需的行为,因为侦听器只在{{1}}元素上,而不是在文档中的选定元素。任何人都可以帮忙吗?
答案 0 :(得分:1)
看起来您的问题是它不能处理嵌套元素。
例如,如果单击具有指定类的父级的嵌套span
元素,则它不起作用,因为您只是检查span
元素是否正常(event.target
)有类。
要解决此问题,您基本上可以委派事件并检查event.target
元素的父元素是否具有指定的类:
document.addEventListener("click", function (e) {
var target = e.target;
while (target && target.parentNode !== document) {
target = target.parentNode;
if (!target) { return; } // If element doesn't exist
if (target.classList.contains('target')){
// do stuff
console.log(e.target);
}
}
});