2 回答
TA贡献1853条经验 获得超18个赞
使用事件委托,您只需在最外层父级上设置事件处理程序并处理那里的所有事件。在处理程序中,您可以测试event.target
以查看事件的源元素是什么,并且仅当该元素是您想要的元素时才继续。
这是一个click
事件示例:
document.querySelector(".parent").addEventListener("click", function(event){
console.log("Either the parent or the child was clicked.");
// Only react if the source of the event was the parent, not the child.
if(event.target.classList.contains("parent")){
alert("you clicked on the parent");
}
});
<div>Click on both the parent and the child. Only the parent will perform the desired action.
<div class="parent">
I'm the parent
<div class="child">
I'm the child
</div>
</div>
</div>
TA贡献1865条经验 获得超7个赞
最后,我解决问题的方法是完全删除 onleave 事件。这是造成大多数问题的原因。
因此,现在在 onenter 上,我只是检查 currentTarget 是否与之前访问过的 currentTarget 不同。如果是,则禁用先前访问的 currentTarget 的指示器,并激活新的 currentTarget 的指示器。
这实际上比我预期的要好,因为即使您离开卡但没有输入新卡,该指示器也会保持不变。这样您就可以随时跟踪您上次输入的位置。
- 2 回答
- 0 关注
- 101 浏览
添加回答
举报