Использование 2 $ (Window) .scroll скриптов

0

Я использую 2 скрипта, которые зависят от функции $ (window).scroll. Один из них - imagescroll.js для изображений с параллаксом, а один - inview.js для анимации css3, в то время как элемент находится в видовом экране. Оба сценария выглядят следующим образом

Inview.js

$(function() {
      var $blocks = $('.animBlock.notViewed');
      var $window = $(document);

  $window.on('scroll', function(e){
    $blocks.each(function(i,elem){
      if($(this).hasClass('viewed')) 
        return;

      isScrolledIntoView($(this));
    });
  });
});

function isScrolledIntoView(elem) {
  var docViewTop = $(window).scrollTop();
  var docViewBottom = docViewTop + $(window).height();
  var elemOffset = 0;

  if(elem.data('offset') != undefined) {
    elemOffset = elem.data('offset');
  }
  var elemTop = $(elem).offset().top;
  var elemBottom = elemTop + $(elem).height();

  if(elemOffset != 0) { // custom offset is updated based on scrolling direction
    if(docViewTop - elemTop >= 0) {
      // scrolling up from bottom
      elemTop = $(elem).offset().top + elemOffset;
    } else {
      // scrolling down from top
      elemBottom = elemTop + $(elem).height() - elemOffset
    }
  }

  if((elemBottom <= docViewBottom) && (elemTop >= docViewTop)) {
    // once an element is visible exchange the classes
    $(elem).removeClass('notViewed').addClass('viewed');

    var animElemsLeft = $('.animBlock.notViewed').length;
    if(animElemsLeft == 0){
      // with no animated elements left debind the scroll event
      $(window).off('scroll');
    }
  }
}

Сценарий параллакса из следующей ссылки

http://www.jqueryscript.net/demo/Simple-Spotify-Like-jQuery-Image-Parallax-Effect-Plugin-Parallax-ImageScroll/demo/

Теперь проблема заключается в том, что, поскольку оба этих сценария используют $ (window).scroll, параллакс перестает работать, и вместо изображения появляется пробел. Вы можете увидеть рабочий HTML по следующей ссылке

http://bit.ly/1gUmHwj

Пожалуйста, дайте мне знать, как я могу это преодолеть.

Заранее спасибо!

  • 1
    Не могли бы вы повторить эту проблему на JSFiddle? Мне не особенно нравится нажимать на некоторые случайные сокращенные URL-адреса ...
  • 0
    Где твой код параллакса? Это может быть из-за $(window).off('scroll');
Показать ещё 1 комментарий
Теги:
parallax

1 ответ

0

Используйте пространства имен jQuery в обоих сценариях:

$window.on('scroll.imagescroll', function(e){
 // CODE
$(window).off('scroll.imagescroll');
 // CODE
  • 0
    Хорошо. Я попробую это. Итак, вы хотите сказать, что вместо $ (window.scroll) я должен использовать $ (window.on ('scroll.imagescroll')?
  • 0
    Нет .. $ (окно) является ссылкой на объект окна, в то время как $ (окно) .on ('scroll.imagescroll') означает, что вы даете этому конкретному событию "имя", и его можно отключить, вызвав его то же самое "имя". Имейте в виду, что $ (window) .off ('scroll') отключит все события прокрутки (все пространства имен).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню