2016-11-05 1 views
1

Okay. Also habe ich ein Div und habe herausgefunden, wie man es ausblendet und durch einen bestimmten Text ersetzt.Ausblenden und ersetzen ein Div mehrmals

Allerdings möchte ich den zweiten Text, der ebenfalls ausgeblendet wird, und ein drittes Div, das eingeblendet wird. Danach möchte ich, dass das vierte Div das dritte und so weiter ersetzt.

Wie genau kann ich das erreichen?

Hier ist mein Code: http://jsfiddle.net/9Dubr/1/

<div id="foo">test</div> 

$('#foo').delay(5000).fadeOut("slow", function(){ 
var div = $("<div id='foo'>test2</div>").hide(); 
$(this).replaceWith(div); 
$('#foo').fadeIn(500); 
}); 

Antwort

3

Versuchen Sie, diese rekursive Funktion

function fadeMessages(arr) { 
 
    if (arr.length == 0) return; 
 
    $('#foo').fadeOut("slow", function(){ 
 
     $("#foo").html(arr[0]).hide().fadeIn("slow", function() { 
 
      arr.shift(); 
 
      fadeMessages(arr); 
 
     }); 
 
    }); 
 
} 
 

 
fadeMessages(["good", "morning", "to", "everyone", "<img src='https://38.media.tumblr.com/avatar_4892c96bf7cb_128.png'><br><button> OK </button>"]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="foo">test</div>

+0

versuchen Und wenn ich möchte, dass der letzte Teil ein Bild und einen Knopf enthält, wie könnte ich das erreichen? Ihre Lösung funktioniert für Text, aber ich hätte in der Frage klarer sein sollen. –

+0

Ich aktualisierte die Antwort, um ein Bild eine Schaltfläche (im Grunde jede HTML, die Sie wollen), und entfernen Sie die unnötige 'var div =' (Danke für die darauf hinweis @ Dmitriy Demir) – elfan

+0

Prost. Vielen Dank für diese effiziente Lösung. Lass mich eine Tutorial-Serie über rekursive Funktionen starten! –

0

Sie können dies versuchen,

function changeHtml(html, callback) { 
 

 
$('#foo').fadeOut("slow", function(){ 
 
    $(this).html(html); 
 
    $(this).fadeIn("slow", callback); 
 
}); 
 
    
 
} 
 

 
changeHtml('test2', function() { 
 
    changeHtml('test3', function() { 
 
    changeHtml('<img src=""/>', function() { 
 
    
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="foo">test</div>

+0

Ich möchte den Test2 durch etwas mehr Text ersetzen und dann möchte ich diesen Text durch ein Bild ersetzen und dieses Bild wird das finale div, das auf dem Bildschirm bleibt. Ich bin mir nicht sicher, wie genau ich das erreichen könnte. –

+0

@ArunO Sie können den aktualisierten Code über – Aruna