2013-07-27 54 views
13

Tôi có 50 div, Nhưng trong cửa sổ của tôi chỉ hiển thị 25, tôi kéo và thả hoạt động trên các div này. 25th div, Nó sẽ cuộn tự động để hiển thị divs còn lại. Làm thế nào để tôi làm điều này trong jquery? bất kỳ ý tưởng?Cách cuộn cửa sổ tự động khi chuột di chuyển dưới cùng của trang bằng cách sử dụng jquery

Tôi đang sử dụng Nestable không kéo()

+2

sự kiện Scroll có thể được kích hoạt bằng tay như được giải thích tại đây: https://developer.mozilla.org/en-US/docs/Web/API/window.scroll Tuy nhiên, vì bạn đang sử dụng đặc biệt việc kéo và thả của jQuery, tôi đã nghĩ rằng việc kéo một phần tử ở cuối cửa sổ trình duyệt đã kích hoạt sự kiện cuộn anyways? – Ken

+0

Làm thế nào để biết khi nào dưới cùng của cửa sổ đạt được trên kéo yếu tố? – Achaius

+1

Tôi nghĩ rằng nó đã tự động. http://ktstowell.github.io/angular-file-utils/#/ Tôi sử dụng kéo và thả ở đây. Khi tôi kéo và mục ở bên trái xuống dưới cùng của cửa sổ trình duyệt sẽ cuộn đến nội dung dưới màn hình đầu tiên. – Ken

Trả lời

11

Điều này sẽ cần một số tinh chỉnh tùy thuộc vào trường hợp sử dụng cụ thể của bạn nhưng có vẻ như hoạt động khá tốt.

Working Example

$('.dd').nestable({ /* config options */ 
}); 

$(window).mousemove(function (e) { 
    var x = $(window).innerHeight() - 50, 
     y = $(window).scrollTop() + 50; 
    if ($('.dd-dragel').offset().top > x) { 
     //Down 
     $('html, body').animate({ 
      scrollTop: 300 // adjust number of px to scroll down 
     }, 600); 
    } 
    if ($('.dd-dragel').offset().top < y) { 
     //Up 
     $('html, body').animate({ 
      scrollTop: 0 
     }, 600); 
    } else { 
     $('html, body').animate({ 

     }); 
    } 
}); 

tài liệu API liên quan:

+0

Cảm ơn, đây là tôi mong đợi. Kịch bản này hoạt động tốt. Cảm ơn bạn rất nhiều. – Achaius

+0

Điều này thực sự rất khó chịu. Nếu tôi tiếp tục di chuyển chuột xung quanh phía dưới, nó sẽ không di chuyển xuống vì các hoạt ảnh hủy bỏ lẫn nhau, và sau đó nếu tôi di chuyển trở lại * đi * từ phía dưới nó bắt đầu cuộn một số tiền định trước. Hơn nữa nó không cập nhật trạng thái của mục bạn đang kéo cho đến khi/trừ khi bạn di chuyển chuột. – 1j01

2

Nếu bạn muốn biết dưới cùng của cửa sổ, bạn có thể kiểm tra

$(window).height() 

$(window).scrollTop();

1

Tôi biết đây là một chủ đề cũ nhưng vì tính năng này giữ ở chế độ chờ, tôi chỉ được cải thiện đang apaul34208 của, hy vọng nó sẽ giúp

$(window).mousemove(function (e) { 
    if ($('.dd-dragel') && $('.dd-dragel').length > 0 && !$('html, body').is(':animated')) { 
     var bottom = $(window).height() - 50, 
      top = 50; 

     if (e.clientY > bottom && ($(window).scrollTop() + $(window).height() < $(document).height() - 100)) { 
      $('html, body').animate({ 
       scrollTop: $(window).scrollTop() + 300 
      }, 600); 
     } 
     else if (e.clientY < top && $(window).scrollTop() > 0) { 
      $('html, body').animate({ 
       scrollTop: $(window).scrollTop() - 300 
      }, 600); 
     } else { 
      $('html, body').finish(); 
     } 
    } 
}); 
+0

Điều này khắc phục việc hủy các hoạt ảnh khác nhưng vẫn không tuyệt vời. Quá trình chuyển đổi là phi tuyến, do đó, nó bắt đầu và dừng giả sử bạn di chuyển chuột xung quanh vùng cuộn xuống. Nếu bạn không di chuyển chuột xung quanh khi nó kết thúc hoạt ảnh, nó sẽ dừng di chuyển cho đến khi bạn di chuyển pixel, ngay cả khi bạn đã tạm dừng trên vùng cuộn xuống và bắt đầu di chuyển chuột ra khỏi nó. – 1j01

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