Вопрос:

связывать и расстегивать вместе с переключателем

javascript jquery

69 просмотра

2 ответа

1464 Репутация автора

Мне нужно показать div .overlayпользователю при нажатии, и пользователь не сможет прокручивать или перемещаться с этой страницы, пока он не нажмет на нее снова и не закроет ее.

Пока я пробовал с приведенным ниже кодом, и это работает

 $('#clicker').click(function() {

            $(".overlay").toggle();

            $('html').css('overflow', 'hidden');
            $('body').bind('touchmove', function(e) {
                e.preventDefault();
            });
        });

но проблема в том, что когда пользователь нажимает снова, div исчезает, но прокрутка отсутствует.

Мне нужно добавить приведенный ниже код, чтобы он работал ...

 $('html').css('overflow', 'scroll');
 $('body').unbind('touchmove');

Может кто-нибудь помочь мне, как отсоединить и добавить вышеупомянутый код JS на второй щелчок или переключил?

Автор: LiveEn Источник Размещён: 22.08.2016 08:30

Ответы (2)


1 плюс

2848 Репутация автора

Если вы добавите условие в touchmoveфункцию, вы можете проверить, отображается ли div, и решить, как это сделать:

$('body').bind('touchmove', function(e) {
  if($(".overlay:visible").length) {
    e.preventDefault();
  }
});
Автор: Yaakov Ainspan Размещён: 22.08.2016 08:33

1 плюс

146257 Репутация автора

Решение

Вы можете проверить видимость наложения и выполнить соответствующий код:

$('#clicker').click(function() {
    if ($(".overlay").toggle().is(':visible') {
        $('html').css('overflow', 'hidden');
        $('body').bind('touchmove', function(e) {
            e.preventDefault();
        });
    } else {
        $('html').css('overflow', 'scroll');
        $('body').unbind('touchmove');
    }
});
Автор: trincot Размещён: 22.08.2016 08:35
Вопросы из категории :
32x32