2010-07-06 37 views
11

Tôi có một chức năng mà tôi đã ràng buộc với sự kiện scroll(), nhưng thực tế là tôi muốn hàm chỉ được kích hoạt trong trường hợp cuộn dọc (tôi cũng có một số cuộn ngang).Có sự kiện cuộn dọc trong jQuery

Tôi không thấy khả năng như vậy trong tài liệu hướng dẫn của jQuery, có thể có một mẹo để làm như vậy không?

Trả lời

11

Không có sự kiện cụ thể, nhưng bạn có thể kiểm tra vị trí .scrollLeft() để xem liệu nó đã di chuyển từ vị trí đã lưu trước đó chưa.

Something như thế này:

var prevLeft = 0; 
$(document).scroll(function(evt) { 
    var currentLeft = $(this).scrollLeft(); 
    if(prevLeft != currentLeft) { 
     prevLeft = currentLeft; 
     console.log("I scrolled horizontally."); 
    } 
}); 
+0

Tôi không biết tại sao tôi thậm chí không nghĩ về điều đó. Cảm ơn rất nhiều đó là chính xác những gì tôi đang tìm kiếm. (Tôi chỉ sử dụng scrollTop() thay vì vì nó trang bị cho tình huống của tôi) –

+0

@Michael - Bạn được chào đón. : o) – user113716

0

này nên làm việc:

var prevLeft = 0; 
$(document).scroll(function(evt) { 
    var currentLeft = $(this).scrollLeft(); 
    if(prevLeft === currentLeft) { 
     console.log("I scrolled vertically."); 
    } 
    else { 
     prevLeft = currentLeft; 
    } 
}); 
3

Bạn cũng có thể sử dụng .scrollTop để thực hiện một sự kiện cuộn tùy chỉnh thẳng đứng.

var prevTop = 0; 
$(document).scroll(function(evt) { 
    var currentTop = $(this).scrollTop(); 
    if(prevTop !== currentTop) { 
     prevTop = currentTop; 
     console.log("I scrolled vertically."); 
    } 
}); 

Jquery .scrollTop()

Các vấn đề liên quan