我正在點擊觸發的下拉菜單上。我遇到的問題是,當我點擊已打開的下拉菜單中的鏈接時,它會自動關閉下拉菜單。我試圖用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/
爲什麼使用函數handleClickOut()? –
如果用戶單擊外部下拉區域,則需要handleClickOut()來關閉下拉框。 –