2014-02-11 4 views
0

У меня возникли проблемы с получением моей кнопки прокрутки до верхней кнопки. Я знаю, что проблема с другой анимацией, но я не могу понять, что вызывает проблему. Проблема в том, что другая анимация «начинается с прокрутки до 500», прокрутка до верхней кнопки больше не исчезает и исчезает.Перейти к началу страницы wont fadeOut

$.chain = function() { 
    var promise = $.Deferred().resolve().promise(); 
    jQuery.each(arguments, function() { 
     promise = promise.pipe(this); 
    }); 
    return promise; 
    }; 

    function scrollTop(){ 
    if(typeof pageYOffset!= 'undefined'){ 
     return pageYOffset; 
    } 
    else{ 
     var b = document.body; //IE 'quirks' 
     var d = document.documentElement; //IE with doctype 
     d = (d.clientHeight)? d : b; 
     return d.scrollTop; 
    } 
    }  

    $(window).on("scroll", function(){ 
    if(scrollTop() >= 600){ 
    $(window).off("scroll"); 
     var animations = $.chain(function() { 
     return $('#animate1 img').fadeIn('slow').delay(400); 
     }, function() { 
     return $('#animate2 img').fadeIn('slow').delay(400); 
     }, function() { 
     return $('#animate3 img').fadeIn('slow'); 
     }); 
    }; 
}); 

jQuery(document).ready(function() { 
var offset = 300; 
var duration = 500; 
jQuery(window).scroll(function() { 
    if (jQuery(this).scrollTop() > offset) { 
     jQuery('.scroll-top').fadeIn(duration); 
    } else { 
     jQuery('.scroll-top').fadeOut(duration); 
    } 
}); 
}); 

Благодарим за помощь.

+0

Где вы пытаетесь сказать ему, чтобы исчезнуть на? Я вижу только сглаживание в скрипте. Кроме того, похоже, что вы заканчиваете свое 'if (scrollTop()> = 600) {' как с '}', так и с сими-двоеточием. Просто FYI. – James

ответ

0

$(window).off("scroll"); действительно удаляет scroll событие, которое вы слушаете fadeIn и fadeOut.

Хотя я havent попробовал, но альтернативой было бы использовать event namespacing?

что-то, как показано ниже:

$.chain = function() { 
    var promise = $.Deferred().resolve().promise(); 
    jQuery.each(arguments, function() { 
     promise = promise.pipe(this); 
    }); 
    return promise; 
    }; 

    function scrollTop(){ 
    if(typeof pageYOffset!= 'undefined'){ 
     return pageYOffset; 
    } 
    else{ 
     var b = document.body; //IE 'quirks' 
     var d = document.documentElement; //IE with doctype 
     d = (d.clientHeight)? d : b; 
     return d.scrollTop; 
    } 
    }  

    $(window).on("scroll.foranimations", function(){ // event name 
    if(scrollTop() >= 600){ 
    $(window).off("scroll.foranimations"); // event name 
     var animations = $.chain(function() { 
     return $('#animate1 img').fadeIn('slow').delay(400); 
     }, function() { 
     return $('#animate2 img').fadeIn('slow').delay(400); 
     }, function() { 
     return $('#animate3 img').fadeIn('slow'); 
     }); 
    }; 
}); 

jQuery(document).ready(function() { 
    var offset = 300; 
    var duration = 500; 
    jQuery(window).on("scroll.forfading", function() { // event name 
     if (jQuery(this).scrollTop() > offset) { 
      jQuery('.scroll-top').fadeIn(duration); 
     } else { 
      jQuery('.scroll-top').fadeOut(duration); 
     } 
    }); 
}); 

уведомления различных имен событий scroll.foranimations и scroll.forfading

+0

Спасибо Вайндер. Я новичок в JQuery, имеет смысл после объяснения этого. Знаете ли вы о каком-либо хорошем инструменте отладки JQuery? – Colby

+0

Возможно, вы можете начать с знакомства с '' 'console.log()' '' (https://developer.mozilla.org/en-US/docs/Web/API/console.log) для базового тестирования '' ' if (someCondition) {console.log («условие было истинным»)} else {console.log («...»)} '' ', для более продвинутой отладки, установки точек останова JS (https://developers.google .com/chrome-developers-tools/docs/javascript-debugging) - путь. Вы можете делать отличные вещи, например, ломать определенные события – Varinder

Смежные вопросы