Tengo un elemento desplazable con muchos elementos secundarios y una etiqueta de selección con las opciones correspondientes.Escuchar JS .scroll() de manera eficiente
que quieren cambiar el valor del selecto sobre la base de los elementos .scrollTop()
Cómo hacerlo de manera eficiente? Pensé en almacenar el .offset().top
de los niños en una matriz y recorrerlo. Sin embargo, el navegador no lo maneja. Podría intentar crear una bandera .setTimeout()
, pero eso no parece limpio.
r = $('ul')
offsets = []
r.find('li').each((index) ->
offsets[index] = $(this).offset().top
)
r.bind('scroll', ->
// while loop checking .scrollTop() > offsets[n] is slow
// maybe spams to many .scroll events?
)
Me gusta este one better (hate 'setInterval'). ¡Gracias! – mreq
¿Estoy viendo bien que el evento "fooscroll" solo se active si el usuario deja de desplazarse durante 200 ms? – Simon
@Simon: Sí, tienes razón. Para aclarar, no, no 'estrangula' el desplazamiento. Si desea disparar el desplazamiento cada 200 ms en lugar de solo una vez que los usuarios lo hayan hecho, tendrá que hacerlo de manera diferente. – hayavuk