2011-10-17 3 views
1

자동 스크롤 스크립트에서 작업 중입니다. jquery에서 함수를 사용하여 메뉴의 클릭 된 요소로 이동합니다. 그리고 setInterval을 사용하여 메뉴의 모든 항목을 누릅니다. 이제 모든 것이 정상적으로 작동합니다. 하지만 사용자가 요소 중 하나를 클릭하면 setInterval을 중지해야 할 때 문제가 발생합니다. 즉, setInterval을 중지하십시오.사용자가 자동 ​​스크롤 스크립트를 클릭 할 때 setInterval을 지움

내가 통 더에 대한 두 가지 문제 나 질문이 있습니다

  1. 이가 자동 스크롤을 할 수있는 올바른 방법인가를?
  2. 그렇지 않다면 나에게 약간의 단서를 주면 정말 감사하겠습니다. 그것이 올바른 방법이라면 클릭 이벤트가 사용자에 의해 또는 스크립트에 의해 트리거되었는지를 아는 방법은 무엇입니까?

음. 읽어 주셔서 감사합니다. 내가 사용하고있는 코드는 다음 단계이며, 내가 말했던 것처럼, 슬라이더를 반복적으로 돌리기 위해 작동하고있다. 감사합니다. sidenote처럼 : 클라이언트 청원을 위해 jquery 플러그인을 사용하여 슬라이더를 만들 수 없으므로 수동으로해야합니다.

$('.slider-controls a').live('click',function(e){ 
      moveSlider($(this).attr('href'),e); 

      return false; 
     }); 

     function moveSlider(toDiv,elem){ 
      var nextPos = $(toDiv).position().top; 
      $('.slider-total').animate({ 
       top: -nextPos 
      }, 700); 

      $('.slider-total div').removeClass('activo'); 
      $(toDiv).addClass('activo'); 
     } 

     var autoSlider = setInterval(function(){ 
      var slideNext; 

      if (!($('.slider-total .activo').next().attr('id'))){ 
       slideNext = '#' + $('.slider-total .post:first').attr('id'); 
      } else { 
       slideNext = '#' + $('.slider-total .activo').next().attr('id'); 
      } 

      $('a[href='+slideNext+']').click(); 
     },4000); 

답변

2

당신은 간격의 ID를 전달 clearInterval()를 호출하여 간격을 취소 할 수는 setInterval() 함수에서 반환. 귀하의 경우 :

clearInterval(autoSlider); 
+0

예. 실제로 내 setInterval을 중지한다는 것을 알고 있습니다. 필요한 것은 사용자가 항목을 클릭 할 때 setInterval을 중지하는 것입니다. 나는 $ ('. slider-controls a')에서 clearInterval (autoSlider)을 사용할 수 있습니다. live ('click'); 기능. 여기서 문제는 스크립트 자체가 모든 항목을 클릭한다는 것입니다. 따라서이 방법을 사용하면 슬라이더는 두 번째 항목에만 애니메이션을 적용합니다. – Chuy

+0

'setInterval' 함수 안에'moveSlider'가 직접 호출됩니다. 그런 다음 사용자가 올 것임에 따라'click' 이벤트에서 시간 초과를 지울 수 있습니다. 항상 사용자가 될 필요없이 이벤트 또는 자바 스크립트에서 호출 할 수있는 메소드를 분리하는 로직을 추출하려고 시도하십시오. –