gpt4 book ai didi

javascript - 等价于带有选择器的 $(document).on(event) 的普通 javascript

转载 作者:搜寻专家 更新时间:2023-11-01 04:35:57 25 4
gpt4 key购买 nike

我正在尝试将 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
}
});

但这并没有达到预期的效果,因为监听器仅在 document 元素上,而不是文档 中的选定元素。有人可以帮忙吗?

最佳答案

您的问题似乎是它不适用于嵌套元素。

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

要解决这个问题,您基本上可以委托(delegate)事件并检查是否有任何 event.target 元素的父元素具有指定的类:

Example Here

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);
}
}
});

关于javascript - 等价于带有选择器的 $(document).on(event) 的普通 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33830578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com