带有选择器的$(document).on(event)的纯javascript等价物

带有选择器的$(document).on(event)的纯javascript等价物,javascript,jquery,Javascript,Jquery,我正在尝试将jQuery事件处理程序转换为纯javascript。页面上有一个特定选择器的负载,因此设计时只有一个带有该选择器的事件目标文档: $(document).on("click", selectorString, function(event) { // do stuff }); 其中,selector是一个选择器列表,作为字符串“.one、.two、.three” 但是,如果没有jQuery,我很难复制它: document.addEventListener("click", f

我正在尝试将jQuery事件处理程序转换为纯javascript。页面上有一个特定选择器的负载,因此设计时只有一个带有该选择器的事件目标文档:

$(document).on("click", selectorString, function(event) {
 // do stuff
});
其中,
selector
是一个选择器列表,作为字符串“
.one、.two、.three

但是,如果没有jQuery,我很难复制它:

document.addEventListener("click", function(event){
    if (elementHasClass(event.target, selectorString) {
        // do stuff
    }
});

但这并没有期望的行为,因为侦听器只在
文档
元素上,而不是文档中的选定元素上。有人能帮上忙吗?

您的问题似乎是它对嵌套元素不起作用

例如,如果您单击一个嵌套的
span
元素,该元素具有指定类的父元素,则该元素不起作用,因为您只是检查
span
元素(即
event.target
)是否具有该类

要解决此问题,您可以委托事件并检查
事件。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);
        }
    }
});