javascript - 单击内部链接时下拉菜单关闭

标签 javascript drop-down-menu

我正在研究由点击触发的下拉菜单。我遇到的问题是,当我单击已打开的下拉列表中的链接时,下拉列表会自行关闭。我正在尝试使用 setTimeout 和clearTimeOut 对状态进行排队:当在 dropdownBox 中单击链接时,应通过函数 clickitem 清除 dropdownBox 上的 setTimeOut code>,因此下拉列表不应关闭。但在这里我失败了。有人可以建议我如何才能完成这项工作吗?顺便说一句,我不能使用 jquery,只能使用 Javascript。

const trigger = document.querySelector('.ul-catalogue > li > a');
const dropdownBox = document.querySelector('.nav > .ul-catalogue > li > .dropdown');
const link = document.querySelector(".dropdown > ul > li");

function handleClick() {
    dropdownBox.classList.add('trigger-click');
    setTimeout(() => dropdownBox.classList.add('trigger-click-active'), 150);
  dropdownBox.focus();
}

var timeOut;
function handleClickOut() {
    timeOut = setTimeout(() => dropdownBox.classList.remove('trigger-click', 'trigger-click-active'), 0);
}

function clickitem() {
clearTimeout(timeOut);
}  

trigger.addEventListener('click', handleClick);//This we do not touch
dropdownBox.addEventListener('blur', handleClickOut, true);
link.addEventListener('click', clickitem);

https://jsfiddle.net/zw9w8eg0/3/

最佳答案

这是因为您的链接href="#",所以当您点击它时,您将重定向到同一页面,但所有更新都会重置为它们的原始状态。

关于javascript - 单击内部链接时下拉菜单关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46091309/

相关文章:

javascript - Google是如何实现首页的淡入淡出效果的?

javascript - 如何在 javascript 中编写一行窗口事件?

javascript - 向函数添加自定义属性

javascript - 通过从 javascript 文件查询数据库,根据下拉菜单中的选择更新 div 内容

php - 使用 AJAX、PHP 和 MySQL 链式填充 HTML 选择框

jquery - 当 jQuery 添加其他 <li> 时,下拉菜单宽度会发生变化

javascript - 如何在 Chrome 扩展程序中发送警报?

javascript - Jison:为 AND 和 OR 生成具有多个子节点的 AST 节点

angular - 使下拉列表始终打开(PrimeNg)

mysql - 从 sql 表字段填充下拉列表