2011-01-11 28 views

Trả lời

16

Tôi giả sử bạn đang đề cập đến việc nó có bị cuộn ra ngoài tầm nhìn hay không.

Nếu vậy, hãy thử này:

if($(window).scrollTop() + $(window).height() > $('#my_el').offset().top) { 
    // element is in view 
} 

Ví dụ:http://jsfiddle.net/8x4Zd/

(Nhấp vào bảng kết quả để kiểm tra nếu các yếu tố nhắm mục tiêu là theo quan điểm Sau đó di chuyển xuống và lặp lại..)

Nếu bạn muốn đảm bảo toàn bộ phần tử được hiển thị, hãy thêmcủa nó 210 vào phương trình.

Ví dụ:http://jsfiddle.net/8x4Zd/1/

var win = $(window); 
var el = $('#my_el'); 
var winPos = win.scrollTop() + win.height(); 
var elPos = el.offset().top + el.height(); 

if(winPos > elPos) { 
    // element is in view 
} 
+0

Đó là rất mát mẻ. Tôi đã thử điều đó. Vấn đề lớn là khi phần tử không nằm trong khung nhìn tôi làm ".addClass ('fixed');" đó là vị trí cố định, đáy: 0. mà sau đó làm cho func ở trên nói rằng phần tử được xem. vì vậy những gì kết thúc xảy ra là mục nhấp nháy trong và ngoài tầm nhìn. Có suy nghĩ gì không? – AnApprentice

+0

tin nhắn facebook mới thực hiện điều này với hộp nhận xét bài đăng. Bạn đã thấy điều đó chưa? – AnApprentice

+0

@AnApprentice: Tôi chưa từng thấy (Tôi không có tài khoản facebook.) Sự kiện nào kích hoạt mã thực hiện 'addClass()'? Bạn có lẽ có thể thêm vào thử nghiệm: '&&! El.hasClass ('fixed')'. – user113716

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