In sostanza, ho un codice che deve ottenere l'HTML di un elemento padre quando uno dei suoi elementi di input viene sfocato. È piuttosto semplice. Il problema è che l'HTML restituito quando si chiama html()
sull'elemento padre, non riflette il valore corrente degli elementi di input contenuti all'interno. Cioè, in Firefox o Chrome. Funziona in IE di tutti i posti.metodo html() sbagliato quando il valore di input è stato modificato
Ecco il JSFiddle: http://jsfiddle.net/8PJMx/15/
Prova a cambiare "mondo" nella casella di testo per "tutti" e facendo clic sul pulsante. Nota che aggiungo anche $.now()
in modo che tu possa vedere che il codice è in effetti in esecuzione.
Come si può vedere, $("#parent").html()
non si aggiorna, anche se lo fa $("#child").val()
. Per il vostro piacere di osservazione, ecco il codice HTML:
<div id="parent">Hello <input type='text' id="child" value='world' /></div>
<button id="separateEvent">Get HTML.</button>
<br>
<p>The HTML for #parent is:</p>
<textarea id="parentsHtml" style="width:95%; height: 100px;"></textarea>
<p>The value of #child is:</p>
<textarea id="childsValue" style="width:95%; height: 100px;"></textarea>
... ed ecco il JavaScript:
$("#separateEvent").click(function()
{
$("#parentsHtml").val($("#parent").html() + "\r\[email protected]" + $.now());
$("#childsValue").val($("#child").val() + "\r\[email protected]" + $.now());
});
modificando le proprietà non cambia il sorgente HTML. cosa stai cercando di realizzare con questo comunque? – dqhendricks
Penso che valga la pena sottolineare che la stessa cosa accade se si ispeziona l'elemento negli strumenti del browser. Gli strumenti di Chrome riportano ancora un valore di "mondo" _in HTML_, anche se il valore stesso è cambiato. – Mathletics
Nella mia esperienza, manipolare il DOM tramite '.html()' è raramente il modo migliore di fare le cose. – Blazemonger