JQUERY - конфиликт функция при скроллинге
есть кнопка перемотки вверх-назад, которая первым клик перематывает страницу вверх, запоминаея позицию на странице для возврата.
вторым кликом - происходит возврата сверху страницы в исходное положение на странице (как вконтакте) хочу добавить обработку событий скролстарт и скролстоп. для этого использую следующий код Код:
function scrolled() { но, когда коды в скрипт довать коды кнопки и код обработки старт-стоп скроллинга - кнопка перемотки "вверх" работает только в режиме "вверх", а назад - уже не работает. файрбаг ошибок в скрипте не показывает. опытным путем установил, что баг возникает изза строчки Код:
$(this).off('scroll')[0].setTimeout(function(){ если сможете помочь - буду признателен. полный код скрипта ниже Код:
jQuery(function($){ |
Ты молодец, конечно, вешаешь событие sroll на свою вверх-вниз кнопку, и второе событие scroll которое убивает оба, и навешивает снова только второе.
Используй namespace при навешивании и удалении событий, что бы не удалять все подряд, а лучше перепиши так чтоб не пришлось вообще удалять, тем более через setTimeout |
простите, не совсем понял каким образом события мешают друг другу.
постараюсь ответить на ваше сообщение, а потом, пожалуйста, объясните как для слабоумного... событие $(window).on('scroll',scrolled); срабатывает для блока с классом .extended-ControlsMenu и оно работает даже вместе с topLink.click(function(e) {, где и реализованы вычисления для кнопки вверх-вниз с идентификатором #top-link. если я вас правильно понял, нужно разнести события? каким образом это можно сделать? |
не на столько силен в джаваскриптах, как может показаться.
$(window).on('scroll',scrolled); брал из примера и адаптировал. Цитата:
|
jQuery.myscrollcontrol(jQuery.fn, {
$(window).on('scroll',scrolled); function scrolled() { //do by scroll start $('.extended-ControlsMenu').hide(); $(this).off('scroll')[0].setTimeout(function(){ //do by scroll end $('.extended-ControlsMenu').show(); $(this).on('scroll',scrolled); }, 1500) } }); вот так? upd - ерунда получилась. |
Цитата:
Короче,так должно заработать $(window).on('scroll.scrolled_ns',scrolled); function scrolled() { //do by scroll start $('.extended-ControlsMenu').hide(); $(this).off('scroll.scrolled_ns')[0].setTimeout(function(){ //do by scroll end $('.extended-ControlsMenu').show(); $(this).on('scroll.scrolled_ns',scrolled); }, 1500) } |
ура! заработало! спасибо огромное!
скажите, вот это называется Цитата:
? |
да, scrolled_ns это неймспейс. Загугли jq пространство имен и все поймешь.
|
Часовой пояс GMT +3, время: 22:35. |