tengo lo siguiente:
var onScroll = function () { alert('scroll'); }; scrollArea = $('body'); scrollArea.on('scroll', onScroll); Puedo hacer $('body').scrollTop(400) y el cuerpo se desplaza bien, pero la alert nunca se llama cuando me desplazo manualmente. ¿Qué podría estar causando esto?
Cuando se desplaza por la página, es la window la que se desplaza, no el body . Así que cámbielo a $(window).on('scroll', onScroll);
EDITAR: si desea vincularlo al body específicamente, puede hacerlo usando document.body.onscroll = onScroll; . Pero asegúrese de no vincular ningún evento onscroll a la window en ese caso . Si lo hace, se ignorará document.body.onscroll y se escuchará window.onscroll .
Compruebe esto en acción en el enlace de violín aquí .
No use $('cuerpo'), sino $(documento) o $(ventana) para capturar el desplazamiento, así:
$(document).ready(function() { $(document).scroll(function() { console.log('Scrolled to ' + $(this).scrollTop()); }) });Aquí hay un jsFiddle que funciona: https://jsfiddle.net/4rrm3myL/1/