【问题标题】:Clicking outside the responsive menu closes it down well but afterwards not在响应式菜单之外单击可以很好地关闭它,但之后不会
【发布时间】:2021-05-27 23:50:51
【问题描述】:

当我在菜单外单击时,我正在尝试关闭导航栏并切换汉堡线。 第一次一切正常,但第二次尝试后我无法真正理解发生了什么。

我第二次尝试关闭导航栏时,我的动画函数没有被执行,并且应该切换我的汉堡线的事件定位函数的第二行没有被执行,但是里面的第一行关闭导航的 if 语句确实如此。

当我在导航栏外点击时,它总是关闭,但只有在第二次尝试时才会切换汉堡线。

我的代码在这里https://codepen.io/bunea-andrei/pen/jOBGNgd?editors=1100

另外,我将在此处留下导致错误的 JavaScript:

请帮忙

const wrapperSlide = () => {
    const burger = document.querySelector(".burger");
    const wrapper = document.querySelector(".wrapper");

    const wrapperLinks = document.querySelectorAll(".wrapper span");

    burger.addEventListener("click", () => {
        
            wrapper.classList.toggle("wrapper-active");


            window.addEventListener('mouseup', function (event) {
                if (event.target != wrapper && event.target != burger && event.target.parentNode != burger && event.target.parentNode != wrapper) {
                    wrapper.classList.remove("wrapper-active");
                    burger.classList.toggle("toggle");
                }
            });


            //Animate Links
            wrapperLinks.forEach((link, index) => {

                if (link.style.animation) {   //if the animantion took place do nothing else do it
                    link.style.animation = "";
                } else {

                    link.style.animation = `wrapperLinkFade  0.5s ease forwards ${index / 7 + 0.2}s`;
                }
            });


            //Burger Animation
            burger.classList.toggle("toggle");
        });

    }


wrapperSlide();

【问题讨论】:

    标签: javascript html css


    【解决方案1】:

    每次点击burger 时,您都会添加一个 mouseup 事件监听器。意思是第二次点击,如果在外面点击,就会调用

    burger.classList.toggle("toggle");
    

    两次,这显然会导致问题。

    【讨论】:

    • 对不起,我还是不明白如何解决它
    • 要么在汉堡关闭时删除事件监听器,要么在 onclick 处理程序之外添加事件监听器(但如果菜单未打开,则必须更改逻辑以忽略单击)
    • 知道如何在汉堡关闭时删除事件监听器吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多