2016-09-19 2 views
0

У меня есть более чем одну функцию прокрутки, как это:Есть ли способ объединить все функции прокрутки?

ПЕРВЫЙ

$(document).scroll(function(){ 
     if(!$(".hotel-search-box").length){ 
      return false; 
     } 
     var y = $(this).scrollTop(); 
      if (y > $(".hotel-search-box").offset().top) { 
      $('.sticky-checkin').show(); 
      } else { 
      $('.sticky-checkin').hide(); 
      } 
    }); 

ВТОРОЙ

$(document).scroll(function() { 
     if (!$("#aniStickyNav").length) { 
    return false; //Check if the element exist 
    } 
    var y = $(this).scrollTop(); 
    if (y > $(".after-scroll-sticky").offset().top+$(".hotel-search-box").height()) { 
    $('#aniStickyNav').show(); 
    } else { 
    $('#aniStickyNav').hide(); 
    } 
}); 

ТРЕТИЙ

$(window).on('scroll', function() { 
    backToTop(); 
}); 

Я попробовал этот способ

$(window).scroll(function(){ 
     function siziArayalim(){ 
      var y = $(this).scrollTop(); 
     if (y > 800) { 
     $('.sizi-arayalim').fadeIn(); 
     } else { 
     $('.sizi-arayalim').fadeOut(); 
     } 
    } 
function aniStickyNav(){ 
     if (!$("#aniStickyNav").length) { 
      return false; //Check if the element exist 
     } 
     var y = $(this).scrollTop(); 
     if (y > $(".after-scroll-sticky").offset().top+$(".hotel-search-box").height()) { 
     $('#aniStickyNav').show(); 
     } else { 
     $('#aniStickyNav').hide(); 
     } 
    } 

function stickyCheckin(){ 
    if(!$(".hotel-search-box").length){ 
     return false; 
    } 
    var y = $(this).scrollTop(); 
     if (y > $(".hotel-search-box").offset().top) { 
     $('.sticky-checkin').show(); 
     } else { 
     $('.sticky-checkin').hide(); 
     } 
} 
    siziArayalim(); 
    aniStickyNav(); 
    stickyCheckin(); 
}); 

, но ничего не работает

и из-за более чем одну функцию прокрутки некоторые JS функции не работает, как ожидалось, поэтому мне интересно, что, как объединить все window.scroll функцию в только одной функции здоровой?

ответ

0

Есть некоторые проблемы с вашим кодом, во-первых, вы заявляете свои функции внутри функции прокрутки. Это не нормально для производительности. Второй - это $ (этот), который вы используете внутри функций. Я не знаю, что такое «это». В этом контексте вы используете, это будет объект окна, но я не думаю, что это то, что вам нужно. Вам нужно больше информации здесь.

function siziArayalim(){ 
    var y = $(this).scrollTop(); 
    if (y > 800) { 
     $('.sizi-arayalim').fadeIn(); 
    } else { 
     $('.sizi-arayalim').fadeOut(); 
    } 
} 

function aniStickyNav(){ 
    if (!$("#aniStickyNav").length) { 
     return false; //Check if the element exist 
    } 
    var y = $(this).scrollTop(); 
    if (y > $(".after-scroll-sticky").offset().top+$(".hotel-search-box").height()) { 
     $('#aniStickyNav').show(); 
    } else { 
     $('#aniStickyNav').hide(); 
    } 

    return true; 
} 


function stickyCheckin(){ 
    if(!$(".hotel-search-box").length){ 
     return false; 
    } 
    var y = $(this).scrollTop(); 
    if (y > $(".hotel-search-box").offset().top) { 
     $('.sticky-checkin').show(); 
    } else { 
     $('.sticky-checkin').hide(); 
    } 

    return true; 
} 


$(window).scroll(function(){ 
    siziArayalim(); 

    // check if the functions return false, if not, continue 
    if(!aniStickyNav()){ 
     return false; 
    } 

    if(!stickyCheckin()){ 
     return false; 
    } 
}); 
Смежные вопросы