Jestem naprawdę zaskoczony, że wcześniej nie wpadłem na ten problem, ale wydaje się, że wywołanie funkcji jQueries .html() na elemencie ignoruje zmiany w DOM, tzn. Zwraca kod HTML z oryginalnego źródła. IE tego nie robi. jQueries. html() po prostu wewnętrznie korzysta z właściwości innerHTML.jQuery html() w Firefoksie (używa .innerHTML) ignoruje zmiany DOM
Czy to ma się stać? Jestem w Firefoksie 3.5.2. Mam próbkę poniżej, gdzie bez względu na to, co zmienisz wartość pola tekstowego, innerHTML elementu "container" zawsze zwraca wartość zdefiniowaną w znacznikach HTML. Próbka nie używa jQuery tylko po to, aby była prostsza (wynik jest taki sam przy użyciu jQuery).
Czy ktoś ma pracę, w której można uzyskać html kontenera w jego bieżącym stanie, tj. W tym wszelkie zmiany skryptu w DOM?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<script type="text/javascript">
<!--
function BodyLoad(){
document.getElementById("textbox").value = "initial UPDATE";
DisplayTextBoxValue();
}
function DisplayTextBoxValue(){
alert(document.getElementById("container").innerHTML);
return false;
}
//-->
</script>
</head>
<body onload="BodyLoad();">
<div id="container">
<input type="text" id="textbox" value="initial" />
</div>
<input type="button" id="button" value="Test me" onclick="return DisplayTextBoxValue();" />
</body>
</html>
Twój plugin działa dobrze dla wszystkich kontroli, ale to nie działa w FF textarea sam: - (.... Czy coś zmienić, aby to działało ? już dodano 1, ponieważ to bardzo mi pomogło :-) – Raja
prostu musiałem zrobić subtelna zmiana $ ("textarea", this) .each (function() { \t \t this.innerHTML = this.value; \t }); a teraz działa. Dzięki za twoje rozwiązanie :-) – Raja
@Raja - Dzięki za informację zwrotną - zaktualizowałeś kod! – gnarf