Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отключение скрипта прокрутки во всплывающем окне (https://javascript.ru/forum/misc/74920-otklyuchenie-skripta-prokrutki-vo-vsplyvayushhem-okne.html)

komned37 16.08.2018 16:45

Отключение скрипта прокрутки во всплывающем окне
 
Доброго времени суток!

Помогите в решении задачи. Существует разметка:
<div class="cont_1"></div>
<div class="proektu">
    <div class="proektu-items">
        <div class="proektu-item"></div>
        <div class="proektu-item"></div>
        <div class="proektu-item"></div>
    </div>
    <div class="items">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
</div>
<div class="yslugi"></div>
<div class="blok4"></div>


Блоки item в контайнере items скрыты и появляются поочередно по клику на соответствующий блок proektu-item. На странице сделана прокрутка на фиксированное значение при прокрутке колесиком, реализовано следующим образом
$('body .cont_1').bind('DOMMouseScroll mousewheel', function(e){
            if(e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) {
              $('html, body').stop().animate({scrollTop: 0}, 1000);
            }
            else{
                $('html, body').stop().animate({scrollTop: h}, 1000);
            }
        });
        $('body .proektu').bind('DOMMouseScroll mousewheel', function(e){
              if(e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) {
                $('html, body').stop().animate({scrollTop: 0}, 1000);
              }
              else{
                  $('html, body').stop().animate({scrollTop: 2*h}, 1000);
              }
          });
        $('body .yslygi').bind('DOMMouseScroll mousewheel', function(e){
            if(e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) {
              $('html, body').stop().animate({scrollTop: h}, 1000);
            }
            else{
                $('html, body').stop().animate({scrollTop: 3*h}, 1000);
            }
        });
        $('body .blok4').bind('DOMMouseScroll mousewheel', function(e){
            if(e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) {
              $('html, body').stop().animate({scrollTop: 2*h}, 1000);
            }
            else{                
            }
        });

Необходимо сделать так, что бы когда пользователь находится в блоке proektu и открыл во всплывашке какой-то ранее скрытый item отключалась прокрутка. Пробовал по всякому, ни чего не выходит, самое правильное на мой взгляд это добавление условия нахождения на блоке item, но у меня ни чего не выходит.
Скрипт который пишу для блока proektu
if($('.proektu .items .item').mousewheel()){
            $('body .proektu').bind('DOMMouseScroll mousewheel', function(e){
              if(e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) {
                $('html, body').stop().animate({scrollTop: h}, 1000);
              }
              else{
                  $('html, body').stop().animate({scrollTop: h}, 1000);
              }
          });
        }
        else {
            $('body .proektu').bind('DOMMouseScroll mousewheel', function(e){
              if(e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) {
                $('html, body').stop().animate({scrollTop: 0}, 1000);
              }
              else{
                  $('html, body').stop().animate({scrollTop: 2*h}, 1000);
              }
          });

        }

Прокрутка как работала, так и работает. Вероятнее всего не правильно составляю условие if. Нужно как то отключить выполнение того скрипта при активности блока item

j0hnik 16.08.2018 17:00

м.б. видимость блока проверять?

рони 16.08.2018 17:40

komned37,
попробуйте сделать макет


Часовой пояс GMT +3, время: 18:35.