2013-06-08 35 views
6

Làm thế nào để ngừng tuyên truyền với người nghe sự kiện mousewheel?jquery con lăn chuột dừng tuyên truyền

Khi sử dụng mousewheel qua content yếu tố toàn bộ tài liệu được di chuyển quá

này không hoạt động

content.on('mousewheel', function(e, delta){ 
    content.scrollTop(content.scrollTop() - (40 * delta)); 
    set_bar(); 
    e.stopPropagation(); 
}); 

giải pháp

content.on('mousewheel', function(e, delta){ 
    content.scrollTop(content.scrollTop() - (40 * delta)); 
    set_bar(); 
    return false; 
}); 
+1

TUYỆT VỜI! Tôi đặt stopPropagation và sau đó trả về false. Bất kỳ hạn chế nào bạn biết, bằng cách trả về false? Tôi đã không gặp rắc rối nhưng tôi mơ hồ nhớ đọc những lời cảnh báo nghiêm trọng về điều này trước đây. –

+7

Nó có thể giúp đỡ nếu bạn di chuyển giải pháp xuống câu trả lời sau đó đánh dấu nó là giải quyết. Bằng cách đó nó không hiển thị trong phần chưa được trả lời. –

Trả lời

5

Tôi nghĩ rằng bạn đang bối rối stopPropgation và preventDefault .

  • stopPropagation dừng sự kiện này khỏi sủi bọt chuỗi sự kiện.

  • preventDefault ngăn tác vụ mặc định xảy ra trên thành phần . Trong trường hợp này, nó sẽ ngăn việc cuộn, đối với sự kiện nhấp chuột trên một neo chẳng hạn, nó sẽ dừng liên kết đưa bạn đến URL được xác định trong thuộc tính href.

  • return false mặt khác làm cả hai việc này.

Sự khác biệt quan trọng của nó là bạn có thể muốn sử dụng bọt sự kiện cho sự kiện đồng thời ngăn chặn hành động mặc định cùng một lúc.

Xem hai bài viết này để biết thêm thông tin:

Difference between preventDefault and return false

Difference between preventDefault and stopPropagation

1

Các giải pháp ban đầu là gần như chính xác. Đây là những gì làm việc:

$(".myScrollableDiv").on("mousewheel",function(e) { 
     var scrollRate = 100; 
     var $t = $(this); 
     var dy = e.originalEvent.deltaY * scrollRate; 
     $t.scrollTop($t.scrollTop() + dy); 
     e.preventDefault(); 
    }); 

Tôi nghĩ lý do chính là jQuery không cung cấp cho chúng ta một tham số thứ hai (đồng bằng) nhưng nó có thể được tìm thấy trong các sự kiện riêng của mình. Nếu không thì tốt.