Hiện tại chương trình của tôi đang ở vị trí mà cả hai đều lắng nghe người dùng cuộn một phần tử nhất định, đồng thời, tự động cuộn phần tử này. (Không phải là một chuyển động dần dần, đẹp mà là một bước nhảy liền. Nó có ý nghĩa trong ngữ cảnh, tôi thề.)Thực hiện các thay đổi "scrollLeft"/"scrollTop" không kích hoạt trình xử lý sự kiện cuộn
Có cách nào để sự kiện cuộn không kích hoạt nếu việc cuộn được thực hiện bằng cách thiết lập scrollLeft hoặc scrollTop? Ý tưởng đầu tiên của tôi là một chuyển đổi cơ bản, như:
ignoreScrollEvents = true;
element.scrollLeft = x;
ignoreScrollEvents = false;
function onScroll() {
if(ignoreScrollEvents) return false;
}
nhưng vì các sự kiện không kích hoạt ngay lập tức (oops, duhh), đó không phải là giải pháp khả thi. Tôi có thể thử loại câu trả lời nào khác? Tôi cũng đang sử dụng jQuery, nếu điều đó giúp ích gì.
Trong mã của tôi, tôi nhấn một vấn đề: đôi khi nó xảy ra, ví dụ, scrollLeft đã là 0, sau đó mã của tôi cũng đặt thành 0. Vì vậy, không có sự kiện cuộn nào được kích hoạt và cuộn người dùng tiếp theo bị bỏ qua. (Mà chỉ thực sự là một vấn đề nếu họ di chuyển với Home, End, vv) Nhưng điều này chắc chắn là một giải pháp gần - và tôi biết tôi đã thiếu một cái gì đó ngu ngốc trong việc thực hiện giả. Cảm ơn! – Matchu
Tôi tự hỏi về điều đó ... Đặt cược tốt nhất của bạn sau đó, là kiểm tra xem bạn có thay đổi giá trị trước khi thiết lập cờ không - không đặt nó nếu bạn không.Bạn có thể đã có mã này yếu tố ra thành một chức năng riêng biệt, nhưng nếu không, sau đó làm như vậy sẽ làm cho dễ dàng hơn - xem câu trả lời của Rodrigo cho một ví dụ về điều này. – Shog9