отключить тело прокрутки при открытом меню - PullRequest
0 голосов
/ 04 сентября 2018

Мое меню в WordPress имеет следующий код:

<nav role='navigation'>
    <div id="menuToggle" onclick="lockScroll()" >
        <input type="checkbox"  />
        <span></span>
        <span></span>
        <span></span>
        <ul id="menu">
            <?php
            wp_nav_menu( array(
                'theme_location' => 'menu-1',
            ) );
        ?>
        </ul>
    </div>
</nav>

И эта функция jQuery для отключения прокрутки в теле при нажатии #menuToggle:

<script>
    jQuery(function(lockScroll) {
        if ($('body').hasClass('lock-scroll')) {
            $('body').removeClass('lock-scroll');
        }
        else {
            $('body').addClass('lock-scroll');
        }
  });
</script>

Но это всегда дает мне ошибку

Uncaught TypeError: $ не является функцией в HTMLDocument.

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

Я не совсем уверен, что означает «открытый» в вашем случае. Этот код, скорее всего, должен делать правильные вещи или подталкивать вас в правильном направлении:

jQuery( '#menuToggle' ).click( function() {

    jQuery( 'body' ).addClass( 'lock-scroll' );

} );

jQuery( document ).on( 'mousedown', function( e ) {

    var c = jQuery('#menuToggle');

    if( !c.is( e.target ) && c.has( e.target ).length === 0 ) {

        jQuery( 'body' ).removeClass( 'lock-scroll' );

    }


} );

Если вы нажмете #menuToggle, будет добавлен класс lock-scroll (первая часть). Как только вы нажмете за пределами #menuToggle, оно будет удалено (вторая часть).

0 голосов
/ 04 сентября 2018

Таким образом, вы можете отключить прокрутку при нажатии

.
<script>
    jQuery('#menuToggle').click( function(){

    jQuery( 'body' ).addClass( 'lock-scroll' );
        });

    </script>

Как я могу удалить класс при повторном нажатии?

0 голосов
/ 04 сентября 2018

Пожалуйста, попробуйте это: -

jQuery(function(lockScroll) {
        if (jQuery('body').hasClass('lock-scroll')) {
            jQuery('body').removeClass('lock-scroll');
        }
        else {
            jQuery('body').addClass('lock-scroll');
        }
  });
...