2013-11-22 1 views
0

Как я работаю с циклом с jQuery, я действительно озадачен тем, как передать значения и начать все заново.Каковы ваши лучшие практики для циклизации функции jquery с таймированием

Мой проект - это «простой» ротатор отзывов.

<div id="testimonials"> 
    <div class="testimonial"> 
     <p>You're great!</p> 
    </div> 
    <div class="testimonial"> 
     <p>Thanks a lot!</p> 
    </div> 
    <div class="testimonial"> 
     <p>Rock on!</p> 
    </div> 
</div> 
<script> 
    jQuery(function ($) { 
     $(document).ready(function() { 
      function fade() { 
       $('.testimonial').hide(); 
       var t = $('.testimonial').length; 
       alert(t); 
       for(var i = 1; i <= t; i++){ 
        function slideit(){ 
         var i = i; 
         $('.testimonial.nth-child(' + i + ')').show('slow'); 
         $('.testimonial.nth-child(' + i + ')').hide('slow').delay(2000); 
        } 
        slideit(); 
       } 
      } 
      fade(); 
     }); 
    }); 
</script> 

Теперь я застрял. Указатели, чтобы преодолеть горб?

+0

'$ ('testimonial.nth-ребенок [' + я +«] ') 'должен быть' $ ('. testimonial: nth-child ('+ i +') ') ' – Shikiryu

+0

благодарит @Shikiryu. сделанный! – mike

+0

Обратите внимание, что если вы просто ищете элегантный скрипт jQuery, который обращается к этой функции, см. Http://stackoverflow.com/a/8616480/497438 – mike

ответ

1

Лучший способ заключается в использовании setInterval()

var i = 0, // index of element to show 
    t = $('.testimonial'), // elements 
    max = t.length; // max elements 
function fade() { 
    t.eq(i).show('slow'); // we show current element 
    t.not(':eq('+i+')').hide('slow'); // we hide others 
    if(++i >= max) i=0; // we increment index and if we go over max, we reset index 
} 
window.setInterval(fade,3000); // we call fade every 3 seconds 

http://jsfiddle.net/zf5Wb/

+0

Ahh. Теперь мы используем javascript. Я часто полагаюсь на jQuery, чтобы думать о себе, забывая, как простой javascript может быть проще. Благодаря! – mike

0

Как предложил Шикирю.

Изменить код из

$('.testimonial.nth-child[' + i + ']')
в
$('.testimonial:nth-child(' + i + ')')

+0

сделано ... теперь к логике. – mike

+0

, который когда-либо отвечал, вы нашли полезным отметить ответ или если вы сами нашли решение. Отправьте свой ответ. Это помогает людям, попавшим на эту страницу, найти ответ сразу :) –

+0

Я просто позволял ему немного дышать. Меня раздражает, когда люди также не проверяют решения. – mike