Tôi có một phần tử có thể cuộn với nhiều trẻ em và một thẻ chọn với các tùy chọn tương ứng.Nghe JS .scroll() hiệu quả
Tôi muốn thay đổi giá trị chọn dựa trên các yếu tố .scrollTop()
Làm thế nào để làm điều đó một cách hiệu quả? Tôi nghĩ về việc lưu trữ các trẻ em .offset().top
trong một mảng và lặp đi lặp lại nó. Tuy nhiên, trình duyệt không xử lý nó. Tôi có thể thử tạo cờ .setTimeout()
, nhưng điều đó dường như không rõ ràng.
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?
)
Tôi thích cái này tốt hơn (ghét 'setInterval'). Cảm ơn! – mreq
Tôi có thấy rằng sự kiện "fooscroll" chỉ được kích hoạt nếu người dùng ngừng cuộn 200ms? – Simon
@Simon: Có, bạn là chính xác. Để làm rõ, không có nó 'throttle' di chuyển. Nếu bạn muốn kích hoạt cuộn mỗi 200ms thay vì chỉ một khi người dùng đã thực hiện cuộn, bạn sẽ phải thực hiện theo cách khác. – hayavuk