当前位置: 代码迷 >> JavaScript >> 使用冒泡关闭功能
  详细解决方案

使用冒泡关闭功能

热度:98   发布时间:2023-06-03 17:42:47.0

我实现了一个自定义下拉菜单,该菜单具有使用冒泡功能的关闭功能,并且我以前在页面上只有一个下拉菜单。 但是现在我有两个下拉菜单,如果我打开第一个下拉菜单并单击第二个下拉菜单,则第一个下拉菜单不会关闭。 我该如何解决?

我使用本机JS的关闭函数:

add_event(document, 'click', function(event) {
    event = event || window.event;
    if (!event.keyCode) {
        var elem = event.target;

        while (elem !== document) {
            if (elem && elem.className === 'dropdown') {
                return;
            }
            elem = elem.parentNode;
        }

        close();
    }
}, false);

链接到我的下拉菜单: :

首先,为每个下拉列表向您的文档添加一个事件侦听器。 收到此事件后,每个下拉菜单均应自行关闭。

document.addEventListener('closeDropdown', close);

现在创建一个函数来触发此事件:

function dispatchCloseEvent() {
    var evt = document.createEvent('Event');
    evt.initEvent('closeDropdown', true, false);
    document.dispatchEvent(evt);
}

最后,在下拉列表打开之前,我们将调用此函数以确保文档中的其他下拉列表将被关闭。

现在, open功能如下所示:

function open() {
    dispatchCloseEvent();
    dropdown_content.classList.remove('hidden');
    dropdown_content.scrollTop = 0;
    is_open = true;
}

这是更新的小提琴: :

  相关解决方案