2012-06-09 4 views
0

abortTimer 함수가 실행될 때까지 무기한으로 호버링 상태와 호버 상태 사이에 몇 개의 링크를 움직이게하는 JQuery에서 함수를 만들려고합니다. a.mus-plra.earbuds 사이에서 반대쪽 애니메이션을 적용하고 싶습니다. 따라서 요소 중 하나에 '.hover' 클래스가 사용 설정되어 있으면 다른 클래스는 '.hover' 클래스를 사용하도록 설정하지 않았을 것입니다. 각 요소가 3000 밀리 초마다 마우스 오버 상태가 전환되도록하고 싶습니다.CSS 클래스/호버 상태 사이를 반복하려고 시도 중 -

도움이 될 것입니다. 이 일을 할 수없는 것 같습니다. 내 setInterval 타이머를 정의한 방법에 문제가 될 수 있다고 생각합니다. 감사!!

JQuery와 파일 :

$(document).ready(function(){ 
    var tid = setInterval(animateControls, 4000); 
    function animateControls() { 
     $("a.mus-plr").delay(2000).addClass('hover').delay(2000).removeClass('hover'); 
     $("a.earbuds").addClass('hover').delay(2000).removeClass('hover'); 
    } 
    function abortTimer() { 
     clearInterval(tid); 
    } 
}); 

답변

1

당신은 단순히 togglehover 클래스 당신의 간격 타이머들이 한 데, 다른 하나는 호버 클래스를 가지고 있지으로 시작 가정 만료 될 때마다.

요소가 호버되었을 때 자동 토글을 중지하도록 편집 된.

$(function() { 
    var doToggle = true; 

    $('a.mus-plr').removeClass('hover'); 
    $('a.earbuds').addClass('hover'); 

    var tid = setInterval(function() { 
      if (doToggle) $('a.mus-plr, a.earbuds').toggleClass('hover'); 
    }, 2000); 

    setTimeout(function() { 
     if (tid) clearInterval(tid); 
     $('a.mus-plr,a.earbuds').removeClass('hover'); 
    }, 30000); // stop toggling after 30 seconds 

    $('a.mus-plr,a.earbuds').hover(function() { 
      doToggle = false; 
    }, function() { 
      doToggle = true; 
    }); 
}); 
+0

완벽합니다. 내가 언급 한 것을 잊어 버린 또 하나의 빠른 질문. 마우스가'a.mus-plr' 또는'a.earbuds'를 가리키고 다시 시작/다시 시작될 때이 루프가 멈추거나 멈추도록 설정하려면 어떻게해야할까요? 그? 나는 JQuery'.hover()'함수를 사용하고 있다고 가정하고 있지만 위의 루프에서 어디에서 구현할 지 모르겠습니다. – kaffolder

+0

@kaffolder 토글이 실제로 발생해야하는지 여부에 따라 외부 가드 변수를 true 또는 false로 설정할 수 있습니다. 'hover' 핸들러가 호버링 할 때 가드를 false로 설정하고 그렇지 않을 때는 true로 설정하십시오. – tvanfosson

+0

예제를 제공해 주시겠습니까? 내가 이것을 이해하는지 잘 모르겠다. 정말 고맙습니다! – kaffolder