javascript - JavaScript 链接事件
问题描述
我在链接一些事件时遇到了一些问题。
我在几个链接上添加了一个 eventListener,鼠标悬停时必须显示一个下拉菜单。这可以按预期工作,但是我还希望一些三角形与菜单一起下拉。
到目前为止,我已经尝试将链接元素的数组索引与三角形的数组索引进行匹配。这以一种奇怪的方式工作。基本上,菜单会下拉,但三角形只有在我将鼠标悬停到第二个链接后才会出现,如下图所示:
当我将鼠标悬停在其他元素上时,这种行为会继续。三角形按应有的方式显示。
我知道他们会留在那里,因为我没有为他们添加 mouseleave 事件。
这是代码。我猜匹配正确的数组索引有问题吗?
let mainCateg = document.querySelectorAll(".main-categ");
let dropDown = document.querySelector(".drop-down");
let triangle = document.querySelectorAll('.triangle');
loadEventListeners();
function loadEventListeners() {
for(i = 0; i < mainCateg.length; i++){
mainCateg[i].addEventListener('mouseover', drop);
}
dropDown.addEventListener('mouseleave', leave );
}
function drop(e){
for(i = 0; i < mainCateg.length; i++){
if(mainCateg[i] === e.target){
triangle[i].style.display = 'block';
}
}
dropDown.className ='down';
}
任何帮助深表感谢!
解决方案
更改mainCateg[i] === e.target
为mainCateg[i] === e.currentTarget
您可以在此处查看target 和 currentTarget 之间的区别
推荐阅读
- python-2.7 - 通过列表和数据框提高 for 循环的速度
- azure - 将 Azure 订阅从 CSP 迁移到随用随付
- azure - 新的 Azure PowerShell 'AZ' 模块删除了“部署模式”?
- wordpress - proxy_set_header Hodst $host 是管理面板网址所必需的,但会弄乱其他 wordpress 网址
- php - 如何避免在 OnePager 站点上的页面刷新时重新提交数据 + 避免浏览器弹出
- android - Android片段生命周期在按下后退按钮时将更多项目添加到列表中
- c# - Azure cosmos db 集合未获取分区键
- excel - 无法从 Eclipse STS 打开 excel 文件
- vue.js - 如何创建完美的 autosize textarea?
- apache-kafka - Kafka Connect - 使用配置删除连接器?