addEventListener не срабатывает?
Привет уважаемые форумчане.
Есть лендинг из 3-х страниц. при скролле создается эффект one-page-scroll ну и я создал скрипт, который в зависимости от текущей страницы присваивает классы элементам для анимации. Вот код: <script type="text/javascript"> function init() { window.addEventListener('scroll', function(e){ if ($('body').hasClass('viewing-page-1')) { $('.phone').addClass('y0'); $('.button').addClass('y1'); $('.logo').addClass('y2'); } else { $('.phone').removeClass('y0'); $('.button').removeClass('y1'); $('.logo').removeClass('y2'); } if ($('body').hasClass('viewing-page-2')) { $('.left').addClass('gogo'); $('.right').addClass('gogo'); } else { $('.left').removeClass('gogo'); $('.right').removeClass('gogo'); } if ($('body').hasClass('viewing-page-3')) { $('.iphone').addClass('wtf'); } else { $('.iphone').removeClass('wtf'); } } ); } window.onload = init(); </script> Консоль ошибок не выдает. При скролле класс body "viewing-page-X" присваивается. Где X это номер страницы от 1 до 3. Но почему-то ничего не срабатывает. Если что вот линк на сам проект: http://test2.stdmed.ru |
Только что дошло. Скролла то там нет как такового.
Тогда след. вопрос: на что поставить listener чтобы он отслеживал? |
смотри документацию по плагину.
|
Что тут не так?
вроде все логично: <script type="text/javascript"> function init() { window.addEventListener("DOMMouseScroll", mouse_wheel, false); var mouse_wheel = function(event) { if ($('body').hasClass('viewing-page-1')) { $('.phone').addClass('y0'); $('.button').addClass('y1'); $('.logo').addClass('y2'); } else { $('.phone').removeClass('y0'); $('.button').removeClass('y1'); $('.logo').removeClass('y2'); } if ($('body').hasClass('viewing-page-2')) { $('.left').addClass('gogo'); $('.right').addClass('gogo'); } else { $('.left').removeClass('gogo'); $('.right').removeClass('gogo'); } if ($('body').hasClass('viewing-page-3')) { $('.iphone').addClass('wtf'); } else { $('.iphone').removeClass('wtf'); } } } window.onload = init(); </script> |
На момент
window.addEventListener("DOMMouseScroll", mouse_wheel, false);mouse_wheel === undefined, т.к. function init() { window.addEventListener("DOMMouseScroll", mouse_wheel, false); var mouse_wheel = function(event) {} }это то же самое что: function init() { var mouse_wheel; window.addEventListener("DOMMouseScroll", mouse_wheel, false); mouse_wheel = function(event) {} } Это принципы js, которые следовало бы знать. Чтобы работало так как вы хотите - следует объявлять таки функцию: function init() { window.addEventListener("DOMMouseScroll", mouse_wheel, false); function mouse_wheel(event) {} } P.S. Крутить страницу можно ещё и стрелочками, и кликом по "точкам" справа. Вам же сказали что надо делать: читать документацию к плагину, который вам реализует эту хрень. Там гарантировано есть специальное событие скролла. ... https://github.com/peachananr/onepage-scroll Цитата:
*с презрением плюнул под ноги ViRuSreloaded* |
DOMMouseScroll - неподдерживаемое событие. Тебе же написали смотри доку плагина, там наверняка есть коллбэк на смену страницы, вот в нем пиши свой код
|
Сделал как Вы сказали и все ЗАРАБОТАЛО!!!!!!!!!!!!!!!!
Я вас обожаю дорогие форумчане! код получился такой: <script> $(document).ready(function(){ $(".scroll").onepage_scroll({ sectionContainer: "section", responsiveFallback: 400, loop: false, beforeMove: function(index) { if ($('body').hasClass('viewing-page-1')) { $('.phone').addClass('y0'); $('.button').addClass('y1'); $('.logo').addClass('y2'); } else { $('.phone').removeClass('y0'); $('.button').removeClass('y1'); $('.logo').removeClass('y2'); } if ($('body').hasClass('viewing-page-2')) { $('.left').addClass('gogo'); $('.right').addClass('gogo'); } else { $('.left').removeClass('gogo'); $('.right').removeClass('gogo'); } if ($('body').hasClass('viewing-page-3')) { $('.iphone').addClass('wtf'); } else { $('.iphone').removeClass('wtf'); } } }); }); </script> |
кстати afterMove как раз позволяет достичь желаемого результата, так как beforeMove инициализирует анимацию на странице которая откроется через 0.4 сек.
|
Цитата:
|
Вопрос по кроссплатформенности теперь появился:
при скролле на планшете не работает one-page-scroll :( соответственно не срабатывает отображение элементов на второй странице, так как не меняется класс у \'body\'. Есть какой-нить простой способ??? может кто посоветует? |
Часовой пояс GMT +3, время: 22:16. |