2017-01-03 3 views
0
var paginationscript = function() { 
    if($('#infinite-scrolling').size() > 0) { 
    $('.pagination').hide(); 
    $('#load_more_photos').show(); 
    $('#load_more_photos').on('click', function() { 
     var url = $('.pagination .next_page a').attr('href'); 
     $.getScript(url); 
     $('#load_more_photos').hide(); 
     $(window).on('scroll', function() { 
     var url = $('.pagination .next_page a').attr('href') 
     if($(window).scrollTop() > $(document).height() - $(window).height() - 60 && $.active == 0) { 
     $.getScript(url); 
     } 
     }); 
    }); 
    } 
}; 

So schafft dies eine instagram ähnliche Einrichtung, wo wir zuerst '.pagination' verstecken, die verwendet wird, wenn der Benutzer js nicht aktiviert ist, eine button zeigt. Sie klicken auf diese Schaltfläche und erhalten die nächste Seite mit Fotos. Dann verwenden wir scroll, um die nächsten Seiten hinzuzufügen. Das alles funktioniert gut.jQuery blättern Sie auf den Seiten arbeiten sollte es nicht wegen turbolinks auf Arbeit

Das Problem, dass mit Turbolinks aktiviert ist, funktioniert es auf ganz anderen Teilen der App, obwohl diese Seiten nicht das Element '#infinite-scrolling' enthalten. Diese Seiten haben$('.pagination .next_page a').attr('href') und das scheint genug für Turbolinks zu sein, um die scroll Funktion auf diesen Seiten zu aktivieren!

Ich versuchte, die scroll Funktion in if(window.location.pathname == "/photos") zu wickeln, aber das half immer noch nicht.

bearbeiten: Ich habe ein Skript zu den anderen Seiten hinzugefügt $(window).off('scroll') und dass die Scroll stoppt auf diesen Seiten von der Arbeit, aber ich würde in einer besseren Art und Weise, darüber zu gehen interessiert.

+0

Probieren Sie es einmal $ ("Körper"). Scroll (Funktion (e) {e.preventDefault()}); –

+0

@ Mr.HK können Sie genauer sein, wohin dies im Code gehen soll? vielleicht als Antwort einreichen –

+0

Von Heiss Ja sicher –

Antwort

0

Ich konnte dies von if(!(window.location.pathname == "/photos")) {}; mit dem boolean lösen damit meine Scroll-Funktion beim Verlassen der Seite ausschalten.

0

es einmal probieren ..

Zum Ausschalten dieses Scrollen versuchen:

var current = $(window).scrollTop(); 
$(window).scroll(function() { 
    $(window).scrollTop(current); 
}); 

zurück:

$(window).off('scroll'); 
0

Das Scroll-Ereignis nicht abgebrochen werden kann. Aber Sie können es tun, indem Cancelling diese Interaktion Ereignisse: Maus & Touch Scroll und Buttons mit Scrollen verbunden.

For Demo Click Here....

// left: 37, up: 38, right: 39, down: 40, 
// spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36 
var keys = {37: 1, 38: 1, 39: 1, 40: 1}; 

function preventDefault(e) { 
    e = e || window.event; 
    if (e.preventDefault) 
     e.preventDefault(); 
    e.returnValue = false; 
} 

function preventDefaultForScrollKeys(e) { 
    if (keys[e.keyCode]) { 
     preventDefault(e); 
     return false; 
    } 
} 

function disableScroll() { 
    if (window.addEventListener) // older FF 
     window.addEventListener('DOMMouseScroll', preventDefault, false); 
    window.onwheel = preventDefault; // modern standard 
    window.onmousewheel = document.onmousewheel = preventDefault; // older browsers, IE 
    window.ontouchmove = preventDefault; // mobile 
    document.onkeydown = preventDefaultForScrollKeys; 
} 

function enableScroll() { 
    if (window.removeEventListener) 
     window.removeEventListener('DOMMouseScroll', preventDefault, false); 
    window.onmousewheel = document.onmousewheel = null; 
    window.onwheel = null; 
    window.ontouchmove = null; 
    document.onkeydown = null; 
} 
Verwandte Themen