2014-11-10 5 views
1

jQuery 마우스 휠 플러그인을 사용하고있어 혼자 힘으로 파악할 수없는 문제가 발생했습니다.jQuery 마우스 휠 플러그인 델타 팩터를 곱하면

나는 창 너비를 통해 두 개의 화면 크기를 확인하는 함수를 작성했습니다. 첫 번째 창 너비가 768px보다 큰지 확인합니다. 그렇다면 사이트를 가로로 스크롤하려고합니다. 두 번째는 768px 이하의 창 너비가 있는지 확인합니다. 그렇다면 사이트를 세로로 스크롤하려고합니다.

이 함수는 문서 준비 함수 내에서 그리고 윈도우 크기 조정 함수 내에서 호출됩니다. 브라우저를 수동으로 크기 조정하기 전까지는 제대로 작동합니다. 페이지를 새로 고치지 않고 이렇게하면 마우스 휠 속도가 창 크기를 조정할 때마다 배가되는 것처럼 보입니다.

function resize() { 

    if ($(window).width() > 768) { 

     // Scroll horizontally 
     $('#scroll').mousewheel(function(event, delta) { 
      this.scrollLeft -= (delta * 40); 
      event.preventDefault(); 
     }); 

    } 
    else if ($(window).width() <= 768) { 

     // Scroll vertically 
     $('#scroll').mousewheel(function(event, delta) { 
      this.scrollTop -= (delta * 40); 
      event.preventDefault(); 
     }); 

    } 

} 

$(document).ready(function() { 

    resize(); 

}); 

$(window).resize(function() { 

    resize(); 

}); 

어떤 생각 나는이 문제를 해결할 수있는 방법 : 여기

코드의 비트가 너희들을 보여주는 것입니다? 아니면 이것을 할 수있는 더 좋은 방법이 있습니까? 미리 감사드립니다.

답변

0

$('#scroll').mousewheel(function() { ... })을 호출 할 때마다 mousewheel 이벤트에 대한 새 처리기를 추가하고 있습니다. "곱하기"효과는 여러 이벤트 핸들러가 동시에 scrollLeft/scrolltop에/빼기를 ​​한 결과입니다.

핸들러를 으로 제거하고 새로운 핸들러를 추가하기 전에 .off() 또는 .unmousewheel()으로 처리기를 제거해야합니다.