2010-01-18 2 views
1

리의 사이클을 반복하면서 반복하는 것이 가장 좋은 방법은 무엇입니까?jquery, timer 또는 chaining 함수?

타이머를 사용해야합니까, 아니면 더 좋은 방법이 있습니까?

예를 들어, 한 번에 하나씩 리를 표시하고 싶습니다. 내가 끝을 쳤을 때 나는 위로 돌아가서 다시 시작하고 싶다.

+1

누구나 읽을 때, 순서가 지정되지 않은 목록을 사용하여 슬라이드 쇼 형식을 구현하려는 것처럼 들립니다. –

답변

1

질문을 올바르게 이해할 수 있을지 모르지만 그 질문에 찔림이 있습니다.

타이머는 애니메이션을 수행 할 때나 반복 횟수가 많을 것으로 생각되는 경우 유용합니다 (스레드를 늘리지 않기 위해).

몇 가지 LI 요소를 만들고 UL 요소에 추가하는 경우 (애니메이션처럼) 점진적으로 표시하지 않으려면 for 루프 만 사용하십시오.

1

새로운 jQuery delay()이 여기에 유용 할 수 있습니다.

$(document).ready(function(){ 
    $('ul li').hide(); 

    function loopLi(element){ 
     element.fadeIn('slow').delay(5*1000).fadeOut('slow'); 
     var newElement; 
     if(element.is(':last')){ 
      newElement = element.parents('ul').find('li:first'); 
     }else{ 
      newElement = element.next(); 
     } 

     loopLi(newElement); 
    } 

    loopLi($('ul li:first')); 

}); 

UPDATE :

.delay() 내가 생각했던 모든 아니다. 보인다는 리 페이드 전에 다른 함수를 호출 할 수 있도록 비동기 방식으로 작동합니다. 여기에 더 나은 방법이있다, 간격

$(document).ready(function(){ 
    $('li:first').addClass('current'); 
    $('li:not(:first)').hide(); 

    var slideshow = setInterval(function(){ 
     $('li.current').fadeOut('slow'); 
     var nextElement; 
     if($('li.current').is(':eq('+ $('li').length +')')){ 
     nextElement = $('li:first'); 
     }else{ 
     nextElement = $('li.current').next(); 
     } 

     $('li.current').hide().removeClass('current'); 
     nextElement.addClass('current').fadeIn('slow'); 
    }, 10*1000); 

}); 
+1

littl 구타하지만,이 func 내 인생을 너무 많은 eaiser 만들거야 :-) – prodigitalson

+0

이 나를 위해 메모리를 만듭니다 – zsharp

+0

hmmm ... 당신은 jQuery 1.4를 사용하고 있습니까? – munch

0

당신은 당신이 jCarousel 또는 다른 회전 목마 형 플러그인을 사용할 수 많은 기능을 필요로합니다. 당신의 프리젠 테이션이 어떤 모양인지 알 수 없으므로, 이것이 가치보다 더 큰 문제가 아닐 수도 있습니다.