我正在处理由点击触发的下拉菜单。我遇到的问题是,当我单击已打开的下拉列表中的链接时,它会自动关闭。我试图将状态与setTimeout和clearTimeOut放在队列中:在dropdownBox
中单击链接时,dropdownBox
上的setTimeOut应该由功能clickitem
清除,因此下拉列表不应关闭。但是在这里我失败了。有人可以建议我如何进行这项工作吗?顺便说一句,我不能使用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/
最佳答案
这是因为您的link
具有href="#"
,所以当您单击它时,您将重定向到同一页面,但是所有更新将重置为它们的原始状态。