Ich weiß nicht, einen codepen für diejenigen eines Geistes Zugabe wie Sie die message
in der zweiten span
anhängen ... Aber das wäre die "Zeit", um die .placeholderBot
Ziel.
ich Sie annehmen, dass so etwas wie:
$(".currentMessage").append(message);
Dann können Sie versuchen, von .replaceWith()
zu verwenden:
$(".currentMessage .placeholderBot").replaceWith("<span class = 'bot'>Donny: </span>");
.replaceWith()
genau das passende Element ersetzt (nicht nur ihr Inhalt) mit dem, was als vorgesehen ist Streit.
EDIT
Meine Antwort war über die Elemente, die Sie in Ihrem ersten Anfügen verwenden müssen:
$("#container").html(prevState + "<span class = 'currentMessage'>" + "<span class = 'placeholderBot'>Donny is typing... </span>" + "</span>");
.currentMessage
und .placeholderBot
verwendet werden kann, die „Bot ist die Eingabe“ und die Nachricht, die Sie zu injizieren vom Server bekommen.
Ich machte Sie eine Nutzungsdemo.
function bot(){
var prevState = $("#container").html()+"Guest: "+$("#guestInput").val()+"<br>";
$("#container").html(prevState + "<span class='currentMessage'>" + "<span class='placeholderBot'>Donny is typing... </span>" + "</span><br>");
// Simulating a delay here.
setTimeout(function(){
var message= "A random answer.";
$(".currentMessage").append(message);
$(".currentMessage .placeholderBot").replaceWith("<span class='bot'>Donny: </span>");
$(".currentMessage").toggleClass("currentMessage oldMessage");
$("#guestInput").val("");
},2000);
}
$("#guestInput").on("change",function(e){
bot();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
---SYSTEM---: Welcome to chatbot.<br>
<br>
</div>
<br>
<input type="text" id="guestInput">
Hinweis $(".currentMessage").toggleClass("currentMessage oldMessage");
, dass die Klasse currentMessage
aus der letzten bot Antwort zu entfernen und ersetzen Sie es durch eine andere Klasse. Wenn nicht, wird möglicherweise die nächste Nachricht an der falschen Stelle eingefügt.
, die gleich ist:
$(".currentMessage").removeClass("currentMessage").addClass("oldMessage");
$ ("# container") html (prevState + Typisierung);. $ ("# container") .html (prevState + actual); – BenjiKemp
Ich bearbeitet ... Meine Antwort war korrekt. Aber es sieht so aus, als müssten Sie sehen, dass es funktioniert. –
Danke für Ihre Hilfe, immer noch versuchen, es auf meinem Bot zu arbeiten. Kannst du mithelfen, wo die "oldMessage" herkommt? – BenjiKemp