2012-05-23 2 views
0

현재 다음 코드를 사용하여 스 와이프 감지 스크립트의 콜백 상단으로 자동 스크롤합니다. 애니메이션 중에 화면을 클릭 할 때 애니메이션을 취소하는 기능을 추가하고 싶습니다.클릭시 상단 스크롤을 취소하십시오.

$('body,html').animate({ 
    scrollTop: 0 
}, 300); 

어떻게하면 취소 할 수 있습니까? 어쩌면이 같은

+0

가능한 중복 [ 사용자 상호 작용 후 스크롤 취소] (http://stackoverflow.com/questions/6160058/cancel-scrolling-after-user-interaction) –

답변

1

애니메이션을 중지 stop 방법을 사용합니다. jumpToEnd 매개 변수에 false을 전달해야 사용자가 자동으로 화면 상단으로 이동하지 않습니다.

$(function() { 
    //Substitute with whatever kicks off this scroll in your app. 
    $('button').on('click', function(evt) { 
     $('body,html').animate({ 
      scrollTop: 0 
     }, 3000); 

     evt.stopPropagation(); 
    }); 

    $(window).on('click', function(evt) { 
     $('body,html').stop(); 
    }); 
}); 

라이브 예를 - 편집가 http://jsfiddle.net/FcLbH/2/

- @ AVL의 의견에 따라 stop에 매개 변수를 제거.

+0

음, 이것은 내가 말한 것입니다 : http://jsfiddle.net/DJ8Re/ – AvL

+0

데모의 버튼을 클릭하면 예제가 전파를 멈추지 않습니다. 당신의 대답에서 당신은 자동적으로 사용자가 화면의 맨 위로 이동하는 것을 막기 위해'''''jumpToEnd'''에'''false''를 전달하지 않습니다. –

+0

아마도 내가 틀 렸습니다. 그러나 큐에 더 이상 아무것도 없기 때문에 선택적 매개 변수'clearQueue'가 필요하지 않습니다. 그리고'jumpToEnd'는 기본적으로'false'입니다. 내 jsfiddle 요청한대로 작동 ... – AvL

0

I 오전 클릭 감지에 대해, 어쨌든,이 3 초 후에 애니메이션을 중지됩니다 아주 확실하지 :

$('body,html').animate({ 
    scrollTop: 0 
}, 6000); 

setTimeout(function() { $('html,body').stop(); }, 3000); 

를 정지의 모든 정보()의 경우 :의 http://api.jquery.com/stop/

관련 문제