简体   繁体   English

为什么我的按钮无法禁用overflow-y:hidden?

[英]Why does my button cannot disable overflow-y:hidden?

I'm trying to achieve that my button will be responsive. 我正在尝试实现我的按钮将响应。 In precise, on first click when menu opens it darkens the entire screen and highlight the menu, as well as overflow-y:hidden starts working since my goal is to make sure when menu opens it won't have any scroll. 确切地说,当菜单打开时第一次点击它会使整个屏幕变暗并突出显示菜单,以及overflow-y:hidden开始工作,因为我的目标是确保菜单打开时它不会有任何滚动。 There when the main issue starts to appear, overflow hidden takes place and I cannot switch off when I click on menu button again. 当主要问题开始出现时,会发生溢出隐藏,当我再次单击菜单按钮时我无法关闭。 How to achieve this ? 怎么做到这一点?

my previous jquery: 我以前的jquery:

$("#button").click(function(){
        $('.slide').fadeToggle(500);
        $('.darklayer').toggleClass('active');
        $('body').css({'overflow-y': 'hidden'});
});

here is my new jquery: 这是我的新jquery:

$("#button").click(function(){
        var $dark = $('.darklayer');
        $('.slide').fadeToggle(500);
        ($dark).toggleClass('active');
            if($dark.is(':active')) { 
                $('body').css({'overflow-y': 'hidden'});
            }
            else {
                $('body').off('click');
            }
    }});

My HTML: 我的HTML:

<div class="darklayer"></div>
    <header id="main_menu">
            <div id="menu">
                <ul class="slide">
                    <li><a href="#">Поиск строения</a></li>
                    <li><a href="#">Оплатить ком услуги</a></li>
                    <li><a href=#>Обратиться за помощью</a></li>
                    <li><a href=#>Управляющая компания</a></li>
                    <li><a href="second_page.html">Обратиться в Акимат</a></li>
                    <li><a href=#>Объявления</a></li>
                    <li><a href="page.html">Информация о строении</a></li>
                    <li><a href=#>Обсуждения</a></li>
                    <li><a href=#>Помощь</a></li>
                </ul>
            </div>
            <section id="main_header">
                <div class="left_header">
                    <a href="index.html"><img src="svg/logo.svg" alt="logo" style="height: 16px; padding-left: 15px;"></a>
                    <p class="text_ru">ru</p>
                </div>
                <div class="right_header">
                    <img class="btn search" src="svg/search.svg" alt="search" style="height: 18px; padding-left: 15px; padding-right: 30px; cursor: pointer; ">
                    <img class="btn" src="svg/pro.svg" alt="pro" style="height: 18px; padding-left: 15px; padding-right: 30px; cursor: pointer;">
                    <img id="button" class="btn" src="svg/sandwich.svg" alt="sandwich" style="height: 18px; padding-left: 15px; padding-right: 30px; cursor: pointer;">
                </div>
            </section>
        </header>

try this: user hasClass as shown below 试试这个:用户hasClass如下所示

$("#button").click(function(){
        var $dark = $('.darklayer');
        $('.slide').fadeToggle(500);
        $dark.toggleClass('active');
            if($dark.hasClass('active')) { 
                $('body').css({'overflow-y': 'hidden'});
            }
            else {
                $('body').off('click');
            }
    }});

I think your problem in if statement you can use 我认为你可以使用if语句中的问题

if($dark.hasClass('active'))

instead of 代替

if($dark.is(':active'))

Can you try this? 你能试试吗?

        if($dark.is(':active')) { 
            $('body').css({'overflow-y': 'hidden'});
        }
        else {
            $('body').css({'overflow-y': 'visible'});
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM