2010-05-05 9 views
6

Mam przęsło, na przykład:zmieniając tekst okresowo w rozpiętości od tablicy z jQuery

<p>Here is a sentence <span id="rotate">this</span> is what changes</p> 

i chciałbym zawartość tego przęsła zmieniać co kilka chwil między listą terminów, tak zawartość może zmienić się na:

<span id="rotate">then</span> 
<span id="rotate">thus</span> 

i tak dalej. Chciałbym, aby tekst zniknął, a następnie nowy tekst zaniknie.

Jaki jest najlepszy sposób, aby to zrobić za pomocą jquery?

Odpowiedz

13

Można zrobić coś takiego, przechowywanie bieżący indeks elementu obracającego użyciu .data() wspierać on wiele miejsca, a także:

var terms = ["term 1", "term 2", "term 3"]; //array of terms to rotate 

function rotateTerm() { 
    var ct = $("#rotate").data("term") || 0; 
    $("#rotate").data("term", ct == terms.length -1 ? 0 : ct + 1).text(terms[ct]) 
       .fadeIn().delay(2000).fadeOut(200, rotateTerm); 
} 
​​​​​​​​​​​​​​​​​​​$(rotateTerm); //start it on document.ready 
​ 

ten zanika pierwszy termin w, czeka 2 sekundy, przebarwia ją zmienia tekst i powtarza .... po prostu dostosować wartości co chcesz :)

Here's a quick demo so you can see it in action

+0

Wielką odpowiedź! To działa. Czy mógłbyś jednak wyjaśnić, co się tutaj dzieje? Jestem ciekawa, co oznacza zmienna "ct"? – DavidVII

+1

@DavidBecerra to tylko mój skrót do "obecnego terminu" - nie jest już po prostu tak, że kod idealnie pasuje tutaj bez przewijania. –

+0

@NickCraver Jest to dość stare, ale mam podobną potrzebę, jednak jest nieco bardziej złożona. Muszę obrócić 2 różne ciągi tekstu, jeden mówi "wkrótce" w 4 różnych językach, a drugi ciąg mówi "zasubskrybuj, aby być poinformowanym". Potrzebuję ich do zsynchronizowania/zsynchronizowania, aby języki były zgodne. Próbowałem zdefiniować dwa vary dla dwóch tablic, zmieniając id = "rotate" na klasę, a następnie wypróbowałem instrukcję if, aby załadować odpowiedni var, ale to nie działa. Jakieś pomysły? Ponadto, użyłem tej koncepcji tutaj http://jsfiddle.net/kMBMp/, ale zmodyfikowałem ją na 2 ciągi: –