Come sostituire un elemento in jQuery e restituire l'elemento di sostituzione anziché l'elemento rimosso?Sostituzione di un elemento e restituzione di quello nuovo in jQuery
Ho il seguente scenario. Ho molte caselle di controllo e una volta che si fa clic su una di esse, tale casella di controllo viene sostituita da un'icona di caricamento. Una volta che alcune cose AJAX si verificano, l'icona di caricamento viene sostituita da un'icona di spunta.
Utilizzando jQuery replaceWith
, si farebbe una cosa del genere:
$("input[type='checkbox']").click(function() {
$(this).replaceWith("<img src='loading.jpg' alt='loading'/>");
$.post("somepage.php");
$(this).replaceWith("<img src='tick.jpg' alt='done'/>");
});
Tuttavia, questo non funziona perché replaceWith
restituisce l'elemento che è stato rimosso, non quello che è stato aggiunto. Quindi, una volta completato il materiale AJAX, loading.jpg
rimarrà lì per sempre.
C'è un modo per restituire l'elemento di sostituzione senza selezionarlo?
Grazie in anticipo.
Invece di usare una classe .loading-image, non potresti semplicemente mantenere il riferimento al caricamento img e metterlo nella callback, invece cercarlo di nuovo con $ ('. Loading-image')? – cdmckay
La domanda (e la risposta) era specifica per sostituireWith che restituisce l'elemento che è stato rimosso, non l'elemento che è stato creato. È possibile creare l'elemento e memorizzare un riferimento ad esso in una variabile, quindi eseguire la sostituzione. In tal caso, penso di sì, potresti usare il riferimento e non guardarlo di nuovo. – tvanfosson