$(window).scroll(function(event) {
var eT = $('#ror').offset().top,
wH = $(this).height(),
wSt = $(this).scrollTop();
if(wSt > (eT-wH)) {
alert('you have scrolled to the ror!');
//detach scroll event handler, as we dont want it to fire again
$(this).off(event);
}
}
Der obige Code überprüft, wenn der Benutzer auf ein Element nach unten gescrollt hat. Wenn ja, warnen Sie etwas und trennen Sie den Scroll-Ereignishandler für window
. Sie können auf jquery documentation verweisen, um die Bedeutung von Offset, Höhe und scrollTop zu sehen. Jetzt
, als @Pevera Zeiger, ist es kostspielig Ereignishandler Fenster blättern zu befestigen, sollten Sie sich bewusst sein, dass. Wenn Sie innerhalb des Scroll-Callbacks eine umfangreiche Codeausführung ausführen, wird das Scrollen der Seite erschwert. Wenn Sie also einen Handler an das Fenster scrollen müssen, führen Sie den Rückruf-Code innerhalb eines Timeout-Callbacks aus. Es stellt sicher, dass der Scroll-Callback-Code nach einer bestimmten Verzögerung ausgeführt wird, was das Scrollen der Seite erleichtert. den obigen Code mit Timeout Umschreiben wird wie folgt aussehen:
var timeout = null;
$(window).scroll(function (event) {
if (!timeout) {
// set a timeout to run after 250ms
timeout = setTimeout(function() {
clearTimeout(timeout);
timeout = null;
var eT = $('#ror').offset().top,
wH = $(this).height(),
wSt = $(this).scrollTop();
if (wSt > (eT-wH)){
alert('you have scrolled to the ror!');
//detach scroll event handler, as we dont want it to fire again
$(this).off(event);
}
}, 250);
}
});
Jedesmal Benutzer scrollt die Seite, ein Timeout eingestellt ist nach (mindestens) 250 ms ausgeführt wird.Im Timeout-Callback entfernen wir diesen Timeout-Handler und prüfen, ob der Benutzer zum Element gescrollt hat. Wenn ja, warnen wir etwas und trennen den Scroll-Handler für das Fenster, damit es nicht erneut ausgeführt wird.
Zum besseren Verständnis verweisen wir auf diese FIDDLE.
Weitere Informationen zu diesem stackoverflow post und John Resig blog post.
Ich tat das und es hat nicht funktioniert, ich überprüfte auf der Konsole, die 0 wird in eine Eins, sobald ich scroll drücken. Ich versuche, es nur einmal zu schießen, wenn die Bildlaufleiste es erreicht, wie es am Ende der Seite ist, folgst du mir? – Mohammed